2011-12-19 3 views
8

Я знаю, что на это уже есть миллион вопросов, но я не могу это получить.Rails 3.1, исключить JS-файлы из конвейера активов

Я хочу включить большинство моих JS-файлов в конвейер активов, но у меня есть несколько, которые я хочу загрузить условно (или только на определенные страницы). Это большие, сложные файлы и никогда не будут использоваться 95% пользователей, поэтому я бы предпочёл не загружать их для каждого пользователя. Один набор JS файлов для календаря, помещенного в:

app/assets/javascripts/calendar 

Так что мой манифест настроен, чтобы включить только верхний каталог (и исключить календарную подкаталог):

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require_directory . 

Мой конфиг/среды/production.rb:

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

# Generate digests for assets URLs. 
config.assets.digest = true 

# This following config is left over from previous Rails app, 
# so not sure if it's now unnecessary ... 
# Disable Rails's static asset server 
# In production, Apache or nginx will already do this 
config.serve_static_assets = false 

в представлении я использую nifty_layout Райан Бейтс вручную включить файлы календарь:

javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js" 

Я попытался предварительно скомпилировать как в разработке, так и в производстве - документы не ясны, где я должен это делать, но это похоже на производство.

И когда я запускаю страницу, я получаю это:

ActionView::Template::Error (calendar/date.js isn't precompiled) 

Я не хочу прекомпилирована. Я хочу, чтобы он загружался вручную. (На самом деле было бы нормально предварительно скомпилировать файл, отличный от основного application.js, который создается, но я не знаю, как это сделать.)

Какое решение?

Спасибо!

ответ

4

ОК, я не понимал, что это было, как это работает, но я думаю Я понял.

Добавить файлы, которые нужно вручную загрузить в конфигурации/сред/production.rb следующим образом:

config.assets.precompile += %w(calendar/*.js jquery_calendar/*.css) 

Я думал, что это просто сложить их в application.js и application.css, но, по-видимому, не - он компилирует их как отдельные файлы.

Затем, вы можете назвать файлы, как вы традиционно будет (в этом случае, используя nifty_layout):

javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js" 
Смежные вопросы