gpt4 book ai didi

ruby-on-rails - 正确的 Ruby on Rails 3 替换 ENV ["RAILS_ENV"] ||= 'production' ?

转载 作者:行者123 更新时间:2023-12-03 14:02:27 25 4
gpt4 key购买 nike

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

RAILS_ENV == 'wibble'
# becomes
Rails.env.wibble?

但我不确定该怎么做:
ENV["RAILS_ENV"] ||= 'production'

我们把它放在一大堆 Rake 的顶部。任务和守护进程,想法是你可以通过 RAILS_ENV在命令行上,但如果未通过,则默认为“生产”。

我不确定新的适用于 Rails3 的方式来做到这一点。所以现在我的 rails:upgrade:check强烈提示 Rails2-ishness 的这种入侵......

我不知道是否:
::Rails.env ||= 'production'

将工作。

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

它会自动预先填充命令行上传递的 RAILS_ENV 的值,还是我们需要一种调用守护进程的新方法?

什么是正确的口头禅?

更新:

查看 Rails.env 的源代码,
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end

我们可以推断出很多东西。

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

如果 Rails 在守护进程的上下文中是有效的,那么就不需要做更多的事情了。如果不是 - 那么我就不会太在意并使用旧的 RAILS_ENV像之前一样。

最佳答案

Rails.env实际上是 ActiveSupport::StringInquirer 类型, 覆盖 method_missing为了提供良好的相等语法。查询:http://api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html

所以,如果你想通过默认将它覆盖为“生产”,你应该写:

Rails.env ||= ActiveSupport::StringInquirer.new('production')

但是,您必须检查 Rails.env 的未初始化值。 , 我不确定是不是真的 nil .

IMO 最好的做法是在前面加上 env RAILS_ENV=production到你所有的脚本。

关于ruby-on-rails - 正确的 Ruby on Rails 3 替换 ENV ["RAILS_ENV"] ||= 'production' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4017069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com