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文件。這是一個不好的選擇,因爲Olark有一個rubygem可以解決問題。我改變了這個例子,因爲我正在尋找一般的表單解決方案。

+0

你有什麼東西在你的Gemfile爲olark滿寶石?您是否僅僅依賴於olark.js文件將其包含在您的應用程序中? – James

+0

我沒有使用寶石。我用於Olark的所有內容都是JS代碼片段。無論如何,我不希望這個問題是專門針對奧拉克的。我正在尋找更抽象的解決方案。 –

回答

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

謝謝,但我正在尋找更通用的解決方案。奧拉克只是一個例子。我編輯了這個問題。 –

相關問題