2010-11-09 6 views
2

я следующая пользовательским НПЗ двигатели CMS в моем Gemfile:Проблемы развертывание НПЗ CMS с Capistrano

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 развертывает отлично. Однако, если оставить их в 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 

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

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

Спасибо, Craig

ответ

0

Это, как представляется, проблема с Bundler. Документы говорят, что спутник должен запускаться из каталога, где находится 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 
Смежные вопросы