12

Tôi muốn bằng cách nào đó ngăn chặn một số tài sản nhất định được đưa vào đường ống tài sản trong môi trường phát triển.Loại trừ các tài sản nhất định khỏi đường ống trong môi trường phát triển?

Cho đến nay, tôi đã thử như sau:

# 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 %> 

Tất cả tôi dường như đạt được là có hay không dòng //= require google_analytics_snippet xuất hiện trong biểu hiện. Mã thực tế trong tệp google_analytics_snippet.js không bao giờ được tải, bất kể môi trường khi tôi sử dụng một trong các giải pháp đã thử này.

Có cách nào tôi có thể thực hiện việc này không?

Chỉnh sửa:
Tôi đã sử dụng tệp javascript gọi là olark.js trong ví dụ của mình khi tôi đăng câu hỏi này lần đầu tiên. Đó là một lựa chọn không hợp lệ vì ví dụ từ Olark có rubygem có thể giải quyết được vấn đề. Tôi đã thay đổi ví dụ vì tôi đang tìm giải pháp dạng chung.

+0

Bạn có bất cứ điều gì gemmed trong gemfile của bạn cho olark? Bạn chỉ phụ thuộc vào tệp olark.js để bao gồm điều này trong ứng dụng của bạn? – James

+0

Tôi không sử dụng Gem. Tất cả những gì tôi đang sử dụng cho Olark là đoạn mã JS. Dù sao thì, tôi không muốn hỏi về Olark một cách cụ thể. Tôi đang tìm một giải pháp trừu tượng hơn. –

Trả lời

19

Tôi đã nhìn qua nguồn gốc của sprockets và tôi thấy, rằng chỉ thị preprocessor luôn chạy trước bất kỳ động cơ nào. Vì vậy, không thể thêm bất kỳ logic điều kiện nào vào phần chỉ thị với ERB hoặc công cụ khác.

CẬP NHẬT

Joshua Peek, answered về câu hỏi của tôi:

Câu trả lời là có, nhưng nếu điều này là những gì bạn đang cố gắng để làm:

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

thử này để thay thế:

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

Điều quan trọng của nó là phải nói rằng tệp phải được gọi là application.js.erb hoặc sintax là sai! –

0

Tùy thuộc vào môi trường triển khai của bạn, bạn có thể xem rack/olark gem.

Sau đó, bạn có thể có thể thử một cái gì đó như thế này trong gemfile của bạn:

group :production do 
    gem 'rack-olark' 
end 

Chỉ cần một ý nghĩ ..

+0

Cảm ơn nhưng tôi đang tìm một giải pháp tổng quát hơn. Olark chỉ là một ví dụ. Tôi đã chỉnh sửa câu hỏi. –

Các vấn đề liên quan