【问题标题】:Exclude certain assets from pipeline in development environment?在开发环境中从管道中排除某些资产?
【发布时间】:2012-01-19 02:14:40
【问题描述】:

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

到目前为止,我已经尝试了以下方法:

# 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_sn-p.js 文件中的实际代码永远不会加载,无论我使用这些尝试的解决方案时的环境如何。

有什么办法可以做到吗?

编辑:
当我第一次发布这个问题时,我在我的示例中使用了一个名为 olark.js 的 javascript 文件。这是一个糟糕的示例选择,因为 Olark 有一个可以解决问题的 ruby​​gem。我已经更改了示例,因为我正在寻找通用表单解决方案。

【问题讨论】:

  • 你的 gemfile 中有任何用于 olark 的 gem 吗?您是否仅依赖 olark.js 文件将其包含在您的应用中?
  • 我没有使用 Gem。我用于 Olark 的只是 JS sn-p。无论如何,我不希望这个问题专门针对 Olark。我正在寻找更抽象的解决方案。

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


【解决方案1】:

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

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

group :production do
  gem 'rack-olark'
end

只是一个想法..

【讨论】:

  • 谢谢,但我正在寻找更通用的解决方案。奥拉克只是一个例子。我已经编辑了问题。
【解决方案2】:

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

更新

Joshua Peek,answered 关于我的问题:

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

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

试试这个:

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

【讨论】:

  • 告诉文件应该被称为application.js.erb或sintax错误非常重要!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2018-11-22
相关资源
最近更新 更多