Rails 3.1, Blueprint CSS и Heroku

Я просмотрел эту группу и остальную часть Интернета и нашел по крупицам решение моей проблемы, но не нашел ничего, что действительно работало бы.

Вот моя проблема. Я запускаю Rails 3.1 и развертываю его в кедровом стеке Heroku.

У меня есть Blueprint в каталоге активов/таблиц стилей.

Когда я пытаюсь добавить это в свой шаблон приложения:

  <%= stylesheet_link_tag 'blueprint/screen', :media => "screen, 
projection" %> 
  <%= stylesheet_link_tag 'blueprint/print', :media => "print" %> 

И запустите это в моей командной строке:

RAILS_ENV=production bundle exec rake assets:precompile 

А затем при развертывании я получаю сообщение об ошибке на Heroku, в котором говорится, что «blueprint/screen.css не предварительно скомпилирован», но когда я смотрю в каталоге public/assets, он там и появляется в манифесте. Я получаю эту ошибку, даже если запускаю предварительную компиляцию локально перед фиксацией и развертыванием.

Если я ничего не добавлю в свой шаблон приложения и позволю Rails найти Blueprint, я запущу прекомпиляцию вручную, разверну, и Heroku загрузит сайт. Так что все в порядке.

Однако я получаю URL-адрес для каждой ссылки. Некоторое чтение показывает, что мне нужно добавить ":media => "print" и "экран, проекция" в мой шаблон, но каждый раз, когда я добавляю строки в шаблон, Heroku вообще не загружается, потому что файлы не были предварительно скомпилированы. даже если я их предварительно скомпилировал.

Вся помощь приветствуется.


person Scott S.    schedule 23.12.2011    source источник


Ответы (2)


Я предполагаю, что ваши активы не находятся в Git, если вы запускаете команду локально. Я не думаю, что добавление ресурсов в git, как правило, является хорошей идеей, поскольку общее мнение состоит в том, что это больше проблем, чем пользы:

Должен ли я хранить сгенерированный код в системе управления версиями

Для получения дополнительной информации о конвейере активов и Heroku см. здесь:

http://devcenter.heroku.com/articles/rails31_heroku_cedar#the_asset_pipeline

Лично я оставляю ресурсы для предварительной компиляции после развертывания, а затем использую гем assets_sync для отправки файлов на S3 для обслуживания. Больше информации об этом здесь:

http://devcenter.heroku.com/articles/cdn-asset-host-rails31

person Neil Middleton    schedule 23.12.2011
comment
Спасибо за ответ. Я нашел решение, которое устраняет 90% проблемы. Я изменил строку 18 production.rb на: config.assets.compile = true и удалил строки в application.html.erb, и это решило проблему с Heroku. Я все еще работаю над показанными путями ссылок. - person Scott S.; 28.12.2011

В дополнение к шагам, которые вы упомянули, не забыли ли вы добавить каталог public/assets в свой репозиторий git перед отправкой на Heroku?

У меня была та же проблема, что и у вас, пока я не прочитал ту же статью, о которой упоминает Нил, которая напомнила мне об этом простом шаге, который я забыл.

http://devcenter.heroku.com/articles/rails31_heroku_cedar

person Charles Worthington    schedule 10.02.2012