2

我使用 Rails 3.2 内置的 sprockets 功能来编译静态资产。是否可以使用环境特定变量编译 javascript?

所以我想做这样的事情

/assets/javascripts/myfile.js


 //lots of code
 script.src =
        ('https:' == document.location.protocol ? 'https://' : 'http://') +
                'some.metrics.site/projects/<%=ENV_SPECIFIC_TOKEN%>.js';
  //lots of other code
4

2 回答 2

1

Sprockets 允许您将任意数量的预处理器附加到文件名。在末尾添加a .erb,它将首先被解释为ERB,然后输出为JavaScript文件。

mv assets/javascripts/myfile.js assets/javascripts/myfile.js.erb

查看有关JavaScript/CoffeeScript 和 ERB的 Rails 资产管道指南。

于 2012-10-17T06:40:44.133 回答
0

这个问题有什么更新吗?

使用 .erb 扩展名可以解决问题,但不是在您预编译资产时。

就我而言,我需要为我的登台环境预编译资产。当我做rake assets:precompile RAILS_ENV=staging时,我可以在生成的 js 资产中看到我的环境变量没有定义,因此字符串插值导致一个空字符串。

问题是(我认为)环境变量定义在 config/application.rb 中,生成资产时不会调用它。

我认为 gem Capistrano 可以通过在生成资产之前添加一些任务来提供帮助,但是如果我们可以在生成资产时定义一些环境变量(例如在 CLI 中),那就更好了。

于 2013-11-03T07:54:45.720 回答