在 Ruby on Rails 应用程序中定义常量的最佳位置在哪里?
在 Ruby on Rails 应用程序中,定义常量的最佳位置在哪里?
我有一组常量数据,需要在应用程序中的所有控制器上可用。
In a Ruby on Rails application, where is the best place to define a constant?
I have an array of constant data that I need available across all the controllers in my application.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Rails >= 3,应用程序本身就是一个模块(位于 config/application.rb 中)。 您可以将它们存储在应用程序模块中
,然后使用
MyApplication::SUPER_SECRET_TOKEN
来引用该常量。Rails >= 2.1 && < 您应该将它们放在
/config/initializers
中当常量引用特定模型/控制器/帮助程序时,您可以将其范围限制在类/模块本身中 在Rails 2.1 之前和初始化程序支持,程序员用来将应用程序常量放置在environment.rb中。
这是几个例子
Rails >= 3, the application is itself a module (living in
config/application.rb
). You can store them in the application moduleThen use
MyApplication::SUPER_SECRET_TOKEN
to reference the constant.Rails >= 2.1 && < 3 you should place them
/config/initializers
when the constant has the applications scopePrior to Rails 2.1 and
initializers
support, programmers were used to place application constants in environment.rb.Here's a few examples
您可以将它们放在 config/environment.rb 中:
如果您有大量全局常量,这可能会很混乱。 考虑从 YAML 文件获取数据,或将常量保留在数据库中。
编辑:
weppos 的答案是更好的答案。
将常量保存在 config/initializers/*.rb 中的文件中
You can place them in config/environment.rb:
If you have large amounts of global constants, this can be messy. Consider sourcing from a YAML file, or keeping the constants in the database.
EDIT:
weppos' answer is the better answer.
Keep your constants in a file in config/initializers/*.rb