Dan*_*ero 3 ruby-on-rails erb ruby-on-rails-4
我正在使用Figaro gem但它只在我访问内部的env变量时才有效config/database.yml:
<%= ENV["MYSQL_USERNAME"] %>
Run Code Online (Sandbox Code Playgroud)
但不是当我按照文档指定的方式尝试时:
ENV["MYSQL_USERNAME"]
Run Code Online (Sandbox Code Playgroud)
要么
Figaro.env.mysql_username
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
Figaro Gem的官方文档明确说明(参见"给我一个例子"部分)以下内容:
注意: Figaro使用Rails的标准钩子进行初始化.不幸的是,这个钩子显然发生在读取database.yml之后.由于此问题,在application.yml中创建的环境变量在database.yml中不起作用.
在进一步调查后,我发现有关此事的问题很少.Steve Richert(Figaro Gem的创始人,带有"laserlemon"Github id)在问题#70上说这个
这是一个已知的问题.在Rails初始化之前,我们使用Rails的标准钩子来初始化Figaro.不幸的是,这个钩子显然发生在读取database.yml之后.试图绕过标准的钩子并与其他地方的Rails初始化相结合会引入许多新问题,并且很难解决加载Rails环境的每种情况.我担心这会落入"无法修复"的桶中,直到Rails提供了一个更好(并且支持)的钩子,而且这个钩子可以与费加罗结合在一起......
更新:
根据pull请求#100,database.yml config正在使用两个Rails(如4.0和4.1)和Figaro的最新版本.
最后,我强烈推荐阅读 Taylor Mock和Daniel Kehoe撰写的Rails环境变量指南.这是所有RoR开发人员必读的内容.
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |