在coffeescript文件中访问heroku环境变量

时间:2012-07-28 04:27:38

标签: ruby-on-rails heroku coffeescript

我有一个场景,我希望我的CoffeeScript文件访问类似API键值的环境变量。这在本地工作正常,但是当我把它推到heroku时它不起作用。

该文件的名称类似于myfile.js.coffee.erb

我正在设置这样的值

api_key = '<%= ENV['SERVICE_API_KEY'] %>'

我知道这些值是在heroku中设置的,我已经对拼写等进行了三次检查。我知道它正在处理,因为生成的JavaScript文件看起来像这样

var api_key;
api_key = "";

在预编译资产时我需要做些什么来告诉它访问环境变量?我承认我是CoffeeScript和Rails资产管道的新手。还有另一种更可接受的方式吗?我出于显而易见的原因不想将其嵌入文件中。

2 个答案:

答案 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