2011-12-02 22 views
11

レールここで、Railsスタックのすべてのレイヤーで認識できる変数を定義する必要があります。例えばアプリケーション全体のグローバル変数

、Iはヘルパーレーキタスク、コントローラモデルでアクセスすることができるCUSTOMER_NAME='John'可変したいと思います。この変数をどこで定義しますかRails app?

は、私はここですべての.rbのファイルがロードされます/app/config/initializersに初期化子でRailsのv2.3.2

+0

あなたが求めていることは変数ではなく、定数です。つまり、アプリケーション内から設定することはできません。間違った言葉がここで使われているので、私はここで検索エンジンによって誤解されました。 – Paul

答えて

13

を使用しています、私は通常、このようなもののための1つと呼ばれるpreferences.rbを作成します。

参照:

8

http://guides.rubyonrails.org/configuring.html#using-initializer-filesあなたは真のグローバル定数をしたいですか? ::COSTUMER_NAMEを使用してください。 真のグローバル変数が必要ですか? $COSTUMER_NAMEを使用してください(推奨しません)。 リクエストグローバル変数が必要ですか? #envメソッドのHashを使用してください。

+1

あなたはLinuxサーバー全体のグローバル変数を作成することを意味しますか? – Mellon

+1

'ENV'と'#env'は2つの異なるものです。 'ENV'はUnix環境を表すグローバル定数です。 '#env'は、現在のラック環境を返すコントローラメソッドです。 – Reactormonk

+0

私は::: TESTABC = 'ホラ'とビュー:: TESTABCから印刷しようとすると、定義されていません。 –

14

別のアプローチは、そうのように、config/application.rbにconfigオブジェクトのキーを設定することです:

MyApp::Application.configure do 
    # ... 
    config.my_key = 'some "global" value' 
end 

あなたはその後、これだけでどこでもあなたのアプリ内からmy_keyにアクセスすることができます。

MyApp::Application.config.my_key 

また、マイク・パーハムは同様のことを述べているが、より包括的なアプローチだが、in his blog post

+0

定数ではありませんが、変数ではありませんか?実行時にアプリケーション内で変更できますか? – Paul

+0

これは変数であり、実行時に変更することができます。 –

関連する問題