相关疑难解决方法(0)

纠正Ruby on Rails 3取代ENV ["RAILS_ENV"] || ='生产'?

我们正在升级到Ruby on Rails 3(现在就像世界的一半),我一直在努力取代RAILS_ENV的用法,例如

RAILS_ENV == 'wibble'
# becomes
Rails.env.wibble?
Run Code Online (Sandbox Code Playgroud)

但我不确定如何处理:

ENV["RAILS_ENV"] ||= 'production'
Run Code Online (Sandbox Code Playgroud)

我们已将它放在一大堆Rake任务和守护进程的顶部,并且我们的想法是你可以传递RAILS_ENV命令行,但是如果它没有通过则默认为'production'.

我不确定新的Rails3适合的方式.所以现在我rails:upgrade:check很抱怨Rails2-ishness的这种入侵......

我不知道是否:

::Rails.env ||= 'production'
Run Code Online (Sandbox Code Playgroud)

将工作.

Rails.env守护进程中是否存在?

它是否自动获得预先填充在命令行上传递的RAILS_ENV的值,还是需要一种新的方式来调用守护进程?

对此有什么正确的口头禅?


更新:

查看源代码Rails.env,

def env
  @_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Run Code Online (Sandbox Code Playgroud)

我们可以推断出一些事情.

首先,它看起来RAILS_ENV确实仍然存在 - 这意味着它可以设置Rails.env并将找到它...

如果Rails在守护进程的上下文中有效,则不需要再进行任何操作.如果没有 - 那么我可以不在乎并RAILS_ENV像以前一样使用旧的.

ruby-on-rails ruby-on-rails-3

17
推荐指数
2
解决办法
2万
查看次数

将Sinatra app的测试数据库与开发数据库分开?

作为一个学习练习,我正在使用Sinatra,Datamapper和RSpec构建练习应用程序.我正在使用这个模板,它基本上是上述所有的样板.

我遇到的问题是RSpec和Datamapper似乎配置的方式,每次运行测试数据库相关功能的规范时,这些测试直接更改我的开发数据库而不是测试数据库.

例如,我希望在运行其余规范之前创建一些数据库对象...

before(:all) {
  Region.new(:country => "Canada", :country_code => "CA").save
  ProductLine.new(:reference => "Molders").save
  Product.new(:name => "The Black Molder").save
  Cart.new(:price => 25.95).save
}
Run Code Online (Sandbox Code Playgroud)

然而,每次运行RSpec时,上述元素都会添加到我的开发数据库中.

为什么不生成测试数据库呢?如何让测试数据库正常工作?

除了Sinatra而不是Rails之外,这看起来与此问题非常类似.

如果有任何帮助,我的代码可以在这里看到.

rspec datamapper sinatra

5
推荐指数
1
解决办法
3493
查看次数