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