在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