2009-07-10 2 views

答えて

10

あなたはのconfig/environment.rbにでそれらを配置することができます

Rails::Initializer.run do |config| 
    ... 
    SITE_NAME = 'example.com' 
end 

あなたはグローバル定数を大量に持っている場合、これは厄介なことができます。 YAMLファイルからソースを取得するか、または定数をデータベースに保存することを検討してください。

EDIT:

weppos'答えは、より良い答えです。

設定/初期化子/ *内のファイルにあなたの定数をしてください。

63

のRails> = 3をRB、アプリケーションが(config/application.rbに住む)モジュール自体です。アプリケーションモジュールに格納することができます

module MyApplication 
    SUPER_SECRET_TOKEN = "123456" 
end 

次に、MyApplication::SUPER_SECRET_TOKENを使用して定数を参照してください。


Railsの> = 2.1 & & < 3定数を使用すると、特定のモデル/コントローラ/ヘルパーを参照する場合、一定のアプリケーションスコープ

  • を持っているときは、/config/initializersで彼らに

    1. を配置する必要がありますクラス/モジュール自体内でスコープできます。

    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 
    
  • +2

    だが、動作しません。起動時にはconstants.rbが実行されますが、コントローラまたはビューではSUPER_SECRET_TOKENにアクセスできません。 –

    +6

    これは面白いです。それらの定数の「アッパーカーゼネス」がレールに強制されていることを誰が知っていますか? –

    +5

    注:新しい定数を作成した後で、サーバーを再起動することを忘れないでください。それ以外の場合は、正しく表示されません! –

    関連する問題