Проблема развертывания НПЗ CMS с Capistrano - PullRequest
2 голосов
/ 09 ноября 2010

В моем gemfile есть следующие пользовательские двигатели Refinery CMS:

gem 'refinerycms-venues', '1.0', :path => 'vendor/engines', :require => 'venues'
gem 'refinerycms-events', '1.0', :path => 'vendor/engines', :require => 'events'
gem 'refinerycms-available_spaces', '1.0', :path => 'vendor/engines', :require => 'available_spaces'

Если я их вытащу, Capistrano развернется нормально.Тем не менее, если я оставлю их в капистрано, как больная собака:

 * executing "bundle install --gemfile /home/some_user/our-website.com/releases/20101109020214/Gemfile --path /home/some_user/our-website.com/shared/bundle --deployment --quiet --without development test engines"
    servers: ["our-website.com"]
    [our-website.com] executing command
 ** [out :: our-website.com] The path `/home/some_user/vendor/engines` does not exist.
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/some_user/our-website.com/releases/20101109020214; true"
    servers: ["our-website.com"]
    [our-website.com] executing command
    command finished
failed: "sh -c 'bundle install --gemfile /home/some_user/our-website.com/releases/20101109020214/Gemfile --path /home/some_user/our-website.com/shared/bundle --deployment --quiet --without development test engines'" on our-website.com

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

У кого-нибудь есть идеи?

Спасибо, Крейг

1 Ответ

0 голосов
/ 20 ноября 2010

Это похоже на проблему с упаковщиком. В документах говорится, что сборщик должен запускаться из каталога, в котором находится Gemfile, однако это не так. До меня дошло, что я создаю собственную задачу пакета и явно меняю каталог перед запуском пакета.

Измените #require 'bundler/capistrano' на это в вашем файле deploy.rb

after 'deploy:update_code' do
  bundle_cmd     = fetch(:bundle_cmd, "bundle")
  bundle_flags   = fetch(:bundle_flags, "--deployment --quiet")
  bundle_dir     = fetch(:bundle_dir, File.join(fetch(:shared_path), 'bundle'))
  bundle_gemfile = fetch(:bundle_gemfile, "Gemfile")
  bundle_without = [*fetch(:bundle_without, [:development, :test])].compact

  args = ["--gemfile #{File.join(fetch(:current_release), bundle_gemfile)}"]
  args << "--path #{bundle_dir}" unless bundle_dir.to_s.empty?
  args << bundle_flags.to_s
  args << "--without #{bundle_without.join(" ")}" unless bundle_without.empty?


  run_cmd = "cd \"#{fetch(:current_release)}\"; "
  run_cmd << "#{bundle_cmd} install #{args.join(' ')}"

  run run_cmd, :shell => '/bin/bash'
end
...