Исключить определенные активы из конвейера в среде разработки? - PullRequest
12 голосов
/ 13 декабря 2011

Я бы хотел как-то предотвратить включение определенных активов в конвейер активов в среде разработки.

До сих пор я пробовал следующее:

# 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 никогда не загружается, независимо от среды, в которой я использую одно из этих попыток решения.

Есть ли способ сделать это?

Редактировать:
Я использовал файл javascript olark.js в моих примерах, когда впервые опубликовал этот вопрос.Это был плохой пример, поскольку Оларк имеет рубин, который может решить проблему.Я изменил пример, потому что я ищу решение общей формы.

Ответы [ 2 ]

19 голосов
/ 17 декабря 2011

Я просмотрел источник звездочек и обнаружил, что препроцессор директивы всегда работает перед любым двигателем.Таким образом, невозможно добавить какую-либо условную логику в раздел директив с помощью ERB или другого механизма.

ОБНОВЛЕНИЕ

Джошуа Пик, ответил на мой вопрос:

Ответ - да,но если это то, что вы пытаетесь сделать:

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

попробуйте это вместо:

<% if Rails.env.production?
require_asset "google_analytics_snippet"
end %>
0 голосов
/ 13 декабря 2011

В зависимости от среды развертывания вы можете взглянуть на rack / olark gem .

Затем вы можете попробовать что-то вроде этого в вашем gemfile:

group :production do
  gem 'rack-olark'
end

Просто мысль ..

...