使用Initializers的Rails常量

时间:2015-05-28 16:11:01

标签: ruby-on-rails-3 initialization constants

我不确定我做错了什么。我在文件中写了一个模块:config / initalizers / constants.rb

我有一个定义了一个带有常量和静态方法的模块。在视图中调用时可以访问它。当我想从其中一个环境文件中调用该方法时,会出现问题,我得到一个整体常量错误。我相信在加载环境文件后正在运行初始化程序,但我不确定放置方法或文件的最佳位置。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这可以通过将常量保存为环境变量来解决。对于开发,我可以推荐Dotenv gem。当然,它也需要添加到生产服务器环境中,但Heroku等使这很容易。

在根rails目录中的新创建的CONSTANT_NAME=stringofcharacters1234文件中添加.env之类的内容,每次启动rails s时,它都会解析该文件,并通过以下方式使这些变量可供您访问: ENV哈希,您可以在ENV["CONSTANT_NAME"]访问它,只要它需要。{/ p>

我也更喜欢使用ENV.fetch("CONSTANT_NAME"),因为如果它是空的,会引发错误,如果由于空的env变量而导致某些内容失败,则会有助于调试。

希望这是你正在寻找的东西!