【发布时间】:2010-11-09 14:48:16
【问题描述】:
在 Ruby on Rails 应用程序中,哪里是定义常量的最佳位置?
我有一个常量数据数组,我需要在我的应用程序中的所有控制器中使用这些数据。
【问题讨论】:
标签: ruby-on-rails ruby constants
在 Ruby on Rails 应用程序中,哪里是定义常量的最佳位置?
我有一个常量数据数组,我需要在我的应用程序中的所有控制器中使用这些数据。
【问题讨论】:
标签: ruby-on-rails ruby constants
您可以将它们放在 config/environment.rb 中:
Rails::Initializer.run do |config|
...
SITE_NAME = 'example.com'
end
如果您有大量的全局常量,这可能会很混乱。考虑从 YAML 文件中获取,或将常量保存在数据库中。
编辑:
weppos 的答案是更好的答案。
将常量保存在 config/initializers/*.rb 的文件中
【讨论】:
Rails >= 3,应用程序本身就是一个模块(位于config/application.rb)。您可以将它们存储在应用程序模块中
module MyApplication
SUPER_SECRET_TOKEN = "123456"
end
然后使用MyApplication::SUPER_SECRET_TOKEN 来引用常量。
Rails >= 2.1 &&
/config/initializers 当常量具有应用程序范围时在 Rails 2.1 和 initializers 支持之前,程序员习惯于将应用程序常量放在 environment.rb 中。
这里有几个例子
# config/initializers/constants.rb
SUPER_SECRET_TOKEN = "123456"
# helpers/application_helper.rb
module ApplicationHelper
THUMBNAIL_SIZE= "100x20"
def thumbnail_tag(source, options = {})
image_tag(source, options.merge(:size => THUMBNAIL_SIZE)
end
end
【讨论】:
config.x:stackoverflow.com/a/34053451/144088