Ruby on Railsアプリケーションでは、定数を定義する最適な場所はどこですか?Ruby on Railsアプリケーションで定数を定義する最適な場所はどこですか?
私は自分のアプリケーション内のすべてのコントローラに利用できる必要がある一定のデータの配列を持っています。
Ruby on Railsアプリケーションでは、定数を定義する最適な場所はどこですか?Ruby on Railsアプリケーションで定数を定義する最適な場所はどこですか?
私は自分のアプリケーション内のすべてのコントローラに利用できる必要がある一定のデータの配列を持っています。
あなたはのconfig/environment.rbにでそれらを配置することができます
Rails::Initializer.run do |config|
...
SITE_NAME = 'example.com'
end
あなたはグローバル定数を大量に持っている場合、これは厄介なことができます。 YAMLファイルからソースを取得するか、または定数をデータベースに保存することを検討してください。
EDIT:
weppos'答えは、より良い答えです。
設定/初期化子/ *内のファイルにあなたの定数をしてください。
のRails> = 3をRB、アプリケーションが(config/application.rb
に住む)モジュール自体です。アプリケーションモジュールに格納することができます
module MyApplication
SUPER_SECRET_TOKEN = "123456"
end
次に、MyApplication::SUPER_SECRET_TOKEN
を使用して定数を参照してください。
Railsの> = 2.1 & & < 3定数を使用すると、特定のモデル/コントローラ/ヘルパーを参照する場合、一定のアプリケーションスコープ
/config/initializers
で彼らに
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
だが、動作しません。起動時にはconstants.rbが実行されますが、コントローラまたはビューではSUPER_SECRET_TOKENにアクセスできません。 –
これは面白いです。それらの定数の「アッパーカーゼネス」がレールに強制されていることを誰が知っていますか? –
注:新しい定数を作成した後で、サーバーを再起動することを忘れないでください。それ以外の場合は、正しく表示されません! –