0

我有一个场景,我希望我的 CoffeeScript 文件访问一个环境变量,比如 API 键值。这在本地工作得很好,但是当我将它推到heroku时它不起作用。

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

我正在设置这样的值

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

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

var api_key;
api_key = "";

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

4

2 回答 2

4

因此,由于 API 密钥对于感兴趣的人来说是可见的,无论它是在 javascript 文件还是 html 文件中,并且因为您真的不想在每个请求中生成一个新的 .js 文件,所以我找到的最简单的解决方案是同样的问题是将密钥放入您的layout.html.erb文件中。

您可以将它放入脚本标签中,使用数据属性,无论您的船如何漂浮,但它可以工作,并且您可以获得动态变量的好处并且必须少渲染一个文件。

而且您仍然可以使用<%= ENV['api_key'] %>. 您必须在 js(或咖啡)中获取变量,但这很简单。

于 2012-07-28T05:15:12.203 回答
2

尝试这个

heroku labs:enable user_env_compile -a myapp

然后再次部署

为我们工作!

这个人的所有功劳: Heroku 总是运行 assets:precompile with the production environment for Rails 3.2

于 2012-08-24T11:21:14.980 回答