【问题标题】:Rails Constants using Initializers使用初始化器的 Rails 常量
【发布时间】:2015-05-28 16:11:00
【问题描述】:
我不确定我做错了什么。我在一个文件中写了一个模块:config/initializers/constants.rb
我定义了一个带有常量和静态方法的模块。在视图中调用时可以访问它。当我想从其中一个环境文件中调用该方法时,会出现问题,在该文件中我得到一个未初始化的常量错误。我相信初始化程序是在加载环境文件后运行的,但我不确定将方法或文件放在哪里最好。
任何帮助将不胜感激。
【问题讨论】:
标签:
ruby-on-rails-3
initialization
constants
【解决方案1】:
这可以通过将常量保存为环境变量来解决。对于开发,我可以推荐Dotenv gem。当然,它也需要添加到生产服务器环境中,但是 Heroku 等使这变得非常容易。
您在根 rails 目录中新创建的 .env 文件中添加类似 CONSTANT_NAME=stringofcharacters1234 的内容,每次启动 rails s 时,它都会解析该文件并通过 ENV 哈希使您可以访问这些变量,其中你可以在任何需要的地方像ENV["CONSTANT_NAME"]一样访问它。
我也更喜欢使用ENV.fetch("CONSTANT_NAME"),因为如果它是空的,这将引发错误,有助于调试由于环境变量为空而导致的失败。
希望这就是你要找的东西!