Шеф-повар с рельсами: обработка прекомпиляции ресурсов во время развертывания - PullRequest
3 голосов
/ 15 марта 2012

Если вы используете рельсы со Sprockets и Opscode Chef, как вы справляетесь с прекомпиляцией ресурсов во время развертывания? Я хочу, чтобы моя история git была чистой, поэтому я не хочу прекомпилировать их локально, а затем зафиксировать в репозитории.

Кажется, проще всего добавить их в команду переноса поваренной книги приложения, но мне это кажется неприятным. Прекомпиляция активов должна быть отделена от миграций базы данных. Любые другие предложения о том, как справиться с этим?

1 Ответ

4 голосов
/ 17 марта 2012

Если вы используете ресурс deploy_revision, вы можете прикрепить задачу rake, чтобы выполнить предварительную компиляцию ресурса в блок before_restart.

Вот фрагмент кода, который находится в моем ресурсе deploy_revision. Поскольку я использую RVM, я установил удивительную RVM поваренную книгу Fletcher Nichol удивительности. Вы можете заменить это ресурсом ruby-block.

Оформите более полный пример в my gist .

 app = node[:rails][:app_name]
 before_restart do
   rvm_shell "assets precompile" do
     ruby_string "#{app[:ruby_ver]}@#{app[:gemset]}"
     cwd release_path
     user app[:deploy_user]
     group app[:deploy_user]

     # TODO I could not set the environment via the builtin command. Does not look like it is getting passed to popen4
     # So instead of `environment "RAILS_ENV" => app[:environment]` I have it in the code block
     code %{
       export RAILS_ENV=#{app[:environment]}
       bundle exec rake assets:precompile
     }
   end
 end
...