12

開発環境のアセットパイプラインに特定のアセットが含まれないようにしたいと思います。開発環境で特定の資産をパイプラインから除外しますか?

はこれまでのところ、私は次のことを試してみました:

# app/assets/javascripts/application.js.erb 
<% if Rails.env.production? %> 
//= require google_analytics_snippet 
<% end %> 

# app/assets/javascripts/application.js.erb  
<% if ENV['RACK_ENV'] == 'production' %> 
//= require google_analytics_snippet 
<% end %> 

私が達成しているように見えるすべては//= require google_analytics_snippet行がマニフェストに表示されているか否かです。 google_analytics_snippet.jsファイルの実際のコードは、これらの試行されたソリューションのいずれかを使用する環境に関係なく、ロードされません。

これを行う方法はありますか?

編集:
私が最初にこの質問を投稿するとき、私は私の例でolark.jsというJavaScriptファイルを使用していました。それは問題を解決するかもしれないrubygemをOlarkが持っているので、悪い選択の例でした。私は一般的なフォームのソリューションを探しているので、例を変更しました。

+0

をおolarkのためにあなたのgemfileでgemmed何かを持っていますか?アプリケーションにこれを組み込むためのolark.jsファイルにのみ依存していますか? – James

+0

私はGemを使用していません。 Olarkのために私が使っているのはJSのスニペットだけです。とにかく、私はOlarkについての質問を具体的には望んでいませんでした。私はより抽象的な解決策を探しています。 –

答えて

19

私はスプロケットのソースを通して見てきたし、私が見つけた、 はそのディレクティブプリプロセッサは常にエンジンの前に実行されます。 したがって、ERBや他のエンジンを持つディレクティブセクションに条件付きロジックを追加することはできません。

UPDATE

ジョシュアかいま見、私の質問にanswered

答えはイエスですが、これは、あなたがやろうとしているものである場合:

<% if Rails.env.production? %> 
//= require google_analytics_snippet 
<% end %> 

は、代わりにこれを試してみてください。

<% if Rails.env.production? 
require_asset "google_analytics_snippet" 
end %> 
+2

ファイルがapplication.js.erbと呼ばれるか、sintaxが間違っていることを伝えることが非常に重要です! –

0

展開環境によっては、rack/olark gemがあります。

あなたは、おそらくあなたのgemfileにこのような何かを試みることができる:

group :production do 
    gem 'rack-olark' 
end 

だけ考えた。..

+0

ありがとう、しかし私はより一般的な解決策を探しています。 Olarkは単なる例に過ぎませんでした。私は質問を編集しました。 –