在开发环境中从管道中排除某些资产?

时间:2011-12-13 06:34:23

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 assets sprockets

我想以某种方式阻止某些资产被包含在开发环境中的资产管道中。

到目前为止,我尝试了以下内容:

# 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。我已经改变了这个例子,因为我正在寻找一般的表格解决方案。

2 个答案:

答案 0 :(得分:19)

我查看了链轮的来源,我发现, 指令预处理器总是在任何引擎之前运行。 因此,不可能使用ERB或其他引擎将任何条件逻辑添加到指令部分。

<强>更新

Joshua Peek,answered关于我的问题:

  

答案是肯定的,但如果这是你要做的事情:

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

试试这个:

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

答案 1 :(得分:0)

根据您的部署环境,您可能会看到rack/olark gem

然后你可以在gemfile中尝试这样的事情:

group :production do
  gem 'rack-olark'
end

只是一个想法..