2012-02-18 5 views
1

Прекомпиляция активов на производственном сервере происходит очень медленно. Поэтому я решил перекомпилировать их на машине разработки и загрузить активы на Amazon S3 на jammit. Все это сделано, но у меня есть некоторые негативные проблемы:Контейнер Rails 3 и активов в режиме разработки/производства

  1. Я должен включать public/assets каталог для git управления. Потому что если каталог public/assets пуст на производственном сервере, то сбой
  2. Если я предварительно скомбинирую активы на машине разработки, application.js включает в себя HTML как сжатый, и таким образом я дублировал код js. Изменение js не влияет, поскольку прекомпилированный код application.js прерывает этот код.

Таким образом, мой процесс разработки включает в себя следующие этапы:

  1. Извлеките прекомпилирована активы, если я собираюсь изменить JS или CSS
  2. сделать некоторые изменения
  3. PreCompile активы
  4. Загрузить активы на S3 по jammit-s3
  5. Выполняйте и нажимайте мои изменения, включая активы, на сервер git
  6. Deploy на Капистрано

Мои вопросы:

  1. Можно настроить среду разработки не включают прессованные application.js, если у меня есть это в public/assets каталоге?
  2. Можно ли настроить рабочую среду для работы с пустым каталогом public/assets? Активы будут только на сервере S3.

ответ

1

Я разрешил эту проблему, включив в gitignore атрибуты dir и исключил только один файл - public/assets/manifest.yml, а производственный сервер работает правильно, т. Е. Работает config.action_controller.asset_host = "http://assets.example.com". Для этого требуется только manifest.yml файл

2

На вопрос одного я не знаю постоянного решения, кроме работы:

bundle exec rake assets:clean 

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

В production.rb есть вариант для вашего второго вопроса:

# Enable serving of images, stylesheets, and JavaScripts from an asset server 
config.action_controller.asset_host = "http://assets.example.com" 

Затем следует игнорировать ваш каталог активов, поскольку она опирается на удаленном хосте. Надеюсь, что помогает.

+0

Я установил 'config.action_controller.asset_host', если производственный режим, но я должен иметь предварительно скомпилированные активы в пути public/assets так или иначе, потому что сервер терпит неудачу без них. – ka8725

+0

Возможно, вы захотите попробовать несколько разных настроек а также. Не могли бы вы разместить свой production.rb, потому что очень сложно сказать, что вы сделали, а что нет. Попробуйте минимизировать использование Rails таких активов, как: 'config.assets.compile = false' Поэтому он не будет пытаться их генерировать. – tombruijn

+0

Также, как сервер терпит неудачу? Он не регистрирует удаленный объект asset_host и проверяет каталог public/assets? Разве это действительно служит им из приложения или объекта asset_host? – tombruijn

Смежные вопросы