我不知道我做错了什么。我在一个文件中写了一个模块:config/initizers/constants.rb
我有一个定义了一个常量和静态方法的模块。它在视图中调用时是可访问的。当我想从一个环境文件中调用该方法时,就会出现这个问题,在这个环境文件中我得到了一个未初始化的常量错误。我相信初始化器是在环境文件被加载后运行的,但我不确定在哪里放置方法或文件最好。
可以通过将该常量保存为环境变量来解决这个问题。对于开发,我可以推荐Dotenv宝石。当然,它也需要添加到生产服务器环境中,但Heroku等使这非常容易。
你在根rails目录下新创建的.env
文件中添加CONSTANT_NAME=stringofcharacters1234
之类的东西,每次启动rails s
时,它都会解析该文件,并通过ENV
散列使这些变量对你可用,在那里你可以像ENV["CONSTANT_NAME"]
一样访问它。
我也更喜欢使用ENV.fetch("CONSTANT_NAME")
,因为如果它是空的,它会引发一个错误,如果因为空的env变量而失败,有助于调试。
希望这是你正在寻找的!