在Heroku上运行Railsunit testing
我已经向Heroku部署了一个应用程序,一切正常。 问题是我无法远程运行我的unit testing。 我试过了:
heroku rake test:units
和
heroku rake db:test:prepare
但对于我来说,我得到了一个巨大的堆栈跟踪,结束于:
rake aborted! undefined method `[]' for nil:NilClass /app/[id]/home/.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:429:in `block (3 levels) in ' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `call' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `block in execute' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `each' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `execute'
我正在运行bamboo-mri-1.9.2
堆栈。
到目前为止,我最接近答案的是2009年的博客文章 。
Heroku不提供测试数据库,因此没有直接的方法可以做到这一点。 理论上你可以创建一个新的heroku实例并且可以将rake任务破解为仅仅使用’production’数据库,但是我怀疑所需的努力是值得的。
Heroku devcenter提供了有关如何管理暂存环境的说明: http ://devcenter.heroku.com/articles/multiple-environments
我不知道是否可以运行unit testing,但我完全理解你为什么要这样做。
你的Heroku申请:
- 你本地系统可能有不同的gem(据我所知,如果你在Windows下开发,你的Gemfile.lock会被忽略)
- 可能有一个不同的操作系统(一些Ruby库,因为IO在Windows和Linux上的行为方式不同)
- 可能有不同的ruby版本
- 可能有一个不同的数据库系统(使用与您在Heroku上使用的配置完全相同的配置似乎不那么容易)
- 更一般地说,将在不同的系统上运行(Linux版本,ImageMagick等)
您可以使用暂存环境测试所有这些,但我们可以说对于每个unit testing,所以我认为如果我们可以在Heroku上运行unit testing会很棒。
通常的方法是在本地进行测试,然后部署到隐藏的Heroku实例(“staging”)。 然后,您可以使用Beta测试人员测试该隐藏的临时应用程序,对其运行压力测试等等。 如果您对此感到满意,请将您的应用程序部署到“生产”Heroku实例。
因此,在Heroku上进行测试是可能的,也可以是常规,但不能进行unit testing
Heroku没有测试套件,在部署到heroku之前,你真的应该在开发方面进行测试。
- 在heroku上运行rails app,无法在/ public文件夹中看到静态页面
- 配置与Heroku PostgreSQL的RubyMine远程连接
- Heroku rake db:结构:用cleardb加载找不到’mysql’
- heroku rake db:migrate ERROR“gem install activerecord-mysql-adapter”
- Gem :: LoadError:试图在Heroku上使用时 – Rails 4
- 如何使用Rails代理解析URL?
- Heroku:在视图中显示Git修订哈希和时间戳?
- Link_to(image_tag …)在本地工作但在Heroku部署中中断
- Ruby On Rails Heroku db:migrate Aborted!