哪里是在Ruby on Rails应用程序中定义常量的最佳位置?

时间:2009-07-10 05:02:40

标签: ruby-on-rails ruby constants

在Ruby on Rails应用程序中,哪里是定义常量的最佳位置?

我需要在我的应用程序中的所有控制器上提供一系列常量数据。

2 个答案:

答案 0 :(得分:64)

Rails> = 3,应用程序本身就是一个模块(住在config/application.rb)。您可以将它们存储在应用程序模块中

module MyApplication
  SUPER_SECRET_TOKEN = "123456"
end

然后使用MyApplication::SUPER_SECRET_TOKEN来引用常量。


Rails> = 2.1&& < 3你应该放置它们

    当常量具有应用程序范围时,在/config/initializers
  1. 当常量引用特定模型/控制器/帮助器时,您可以将其范围限定在类/模块本身中

  2. 在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

中的文件中