Chef с рельсами: обработка предварительной компиляции ресурсов во время развертывания

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

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


person u2622    schedule 15.03.2012    source источник


Ответы (1)


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

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

Ознакомьтесь с более полным примером в разделе моя суть.

 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
person Peter Baker    schedule 17.03.2012
comment
Спасибо. Пошел с чем-то очень похожим в конце. Однако этот ответ подтолкнул меня в правильном направлении. - person u2622; 07.04.2012