我有一个场景,我希望我的CoffeeScript文件访问类似API键值的环境变量。这在本地工作正常,但是当我把它推到heroku时它不起作用。
该文件的名称类似于myfile.js.coffee.erb
我正在设置这样的值
api_key = '<%= ENV['SERVICE_API_KEY'] %>'
我知道这些值是在heroku中设置的,我已经对拼写等进行了三次检查。我知道它正在处理,因为生成的JavaScript文件看起来像这样
var api_key;
api_key = "";
在预编译资产时我需要做些什么来告诉它访问环境变量?我承认我是CoffeeScript和Rails资产管道的新手。还有另一种更可接受的方式吗?我出于显而易见的原因不想将其嵌入文件中。
答案 0 :(得分:4)
因此,对于那些感兴趣的人来说API密钥是可见的,无论是在javascript文件还是html文件中,并且因为你真的不希望每次请求都生成一个新的.js文件,所以我最简单的解决方案我们发现同样的问题是将密钥放在layout.html.erb
文件中。
你可以把它扔进一个脚本标签,使用data-attr,无论什么漂浮在你的船上,但是它可以工作,你可以获得动态变量的好处,并且不得不渲染一个文件。
您仍然可以使用<%= ENV['api_key'] %>
。你必须在js(或咖啡)中获取变量,但这非常简单。
答案 1 :(得分:2)
试试这个
heroku labs:enable user_env_compile -a myapp
然后再次部署
为我们工作!
这个家伙的所有信用: Heroku always runs assets:precompile with the production environment for Rails 3.2