应用程序范围的全局变量
在Rails中,我应该在哪里定义Rails堆栈的每一层都可以识别的变量。
例如,我想要一个 CUSTOMER_NAME='John'
变量,可以在 helper、rake 任务、controller 中访问和模型。我应该在 Rails 应用程序中的何处定义此变量?
我正在使用Rails v2.3.2
In Rails, where should I define the variable which can be recognized by every layer of Rails stacks.
For example, I would like to have a CUSTOMER_NAME='John'
variable which can be accessed in helper, rake task, controller and model. Where should I define this variable in Rails app?
I am using Rails v2.3.2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在
/app/config/initializers
的初始化程序中,所有 .rb 文件都会被加载,我通常会为类似的事情创建一个名为preferences.rb 的文件。请参阅:http://guides.rubyonrails.org/configuring.html#using-initializer-files
In an initializer in
/app/config/initializers
all .rb files in here get loaded, I usually create one called preferences.rb for things like this.See: http://guides.rubyonrails.org/configuring.html#using-initializer-files
另一种方法是在 config/application.rb 中的配置对象上设置一个密钥,如下所示:
然后您可以通过以下方式从应用程序中的任何位置访问 my_key:
此外,Mike Perham 描述了一种类似但更全面的方法 在他的博客中发布。
An alternative approach is to set a key on the config object in
config/application.rb
, like so:You can then access
my_key
from anywhere in your app with just this:Also, Mike Perham has described a similar, though a more comprehensive approach in his blog post.
你想要一个真正的全局常数吗?使用
::COSTUMER_NAME
。你想要一个真正的全局变量吗?使用
$COSTUMER_NAME
(不鼓励)。您想要一个请求全局变量吗?在
#env
方法中使用Hash
。You want a true global constant? Use
::COSTUMER_NAME
.You want a true global variable? Use
$COSTUMER_NAME
(discouraged).You want a request-global variable? Use the
Hash
in the#env
method.