2

静的アセットをコンパイルするために、スプロケット機能に組み込まれたRails3.2を使用しています。環境固有の変数を使用して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 に答える