在Ruby on Rails应用程序中,哪里是定义常量的最佳位置?
我需要在我的应用程序中的所有控制器上提供一系列常量数据。
答案 0 :(得分:64)
Rails> = 3,应用程序本身就是一个模块(住在config/application.rb
)。您可以将它们存储在应用程序模块中
module MyApplication
SUPER_SECRET_TOKEN = "123456"
end
然后使用MyApplication::SUPER_SECRET_TOKEN
来引用常量。
Rails> = 2.1&& < 3你应该放置它们
/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
答案 1 :(得分:10)
您可以将它们放在config / environment.rb中:
Rails::Initializer.run do |config|
...
SITE_NAME = 'example.com'
end
如果你有大量的全局常量,这可能会很混乱。考虑从YAML文件中获取,或将常量保留在数据库中。
编辑:
weppos的答案是更好的答案。
将常量保存在config / initializers / * .rb
中的文件中