在Rails,我應該在哪裏定義Rails堆棧的每一層都可以識別的變量。應用程序全局變量
例如,我想有一個CUSTOMER_NAME='John'
變量可以在輔助,耙任務,控制器和模型進行訪問。我應該在哪裏定義這個變量Rails應用程序?
我使用Rails的V2.3.2
在Rails,我應該在哪裏定義Rails堆棧的每一層都可以識別的變量。應用程序全局變量
例如,我想有一個CUSTOMER_NAME='John'
變量可以在輔助,耙任務,控制器和模型進行訪問。我應該在哪裏定義這個變量Rails應用程序?
我使用Rails的V2.3.2
在初始化中/app/config/initializers
在這裏所有的.rb文件獲取加載,我通常會創建這樣的事情一個叫preferences.rb。
請參見:http://guides.rubyonrails.org/configuring.html#using-initializer-files
你想有一個真正全局常量?使用::COSTUMER_NAME
。 你想要一個真正的全局變量?使用$COSTUMER_NAME
(不鼓勵)。 你想要一個請求全局變量?使用#env
方法中的Hash
。
你的意思是創建一個linux服務器全局變量? – Mellon
'ENV'和'#env'是兩回事。 'ENV'是表示Unix環境的全局常量。 '#env'是一個返回當前機架環境的控制器方法。 – Reactormonk
我這樣做:: TESTABC ='hola'並嘗試從視圖打印:: TESTABC並且它沒有定義 –
的另一種方法是設置配置對象上的按鍵在config/application.rb
,像這樣:
MyApp::Application.configure do
# ...
config.my_key = 'some "global" value'
end
然後,您可以從任何地方訪問my_key
在你的應用程序只有這個:
MyApp::Application.config.my_key
此外,麥克佩勒姆描述了一個類似的,但更全面的方法in his blog post。
是不是一個常數,但不是可變的?運行時可以在應用程序中更改嗎? – Paul
這是一個變量,可以在運行時更改。 –
你在問什麼不是變量,而是一個常數,意思是說:它不能從應用程序中設置。我在這裏被搜索引擎誤導,因爲這裏使用了錯誤的術語。 – Paul