2010-11-09 24 views
2

J'ai la raffinerie personnalisée moteurs suivants CMS dans mon Gemfile:problème déploiement Raffinerie CMS avec 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' 

Si je prends ces derniers dehors, Capistrano déploie bien. Cependant, si je les laisse à Capistrano pukes comme un chien malade:

* 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 

son comme il voit les fournisseurs/moteurs et pense qu'il a besoin de les installer pour une raison quelconque. Je n'ai pas compris comment les exclure. J'ai essayé de les mettre dans des groupes, mais l'application ne fonctionnerait pas.

Quelqu'un a-t-il des idées?

Merci, Craig

Répondre

0

Cela semble être un problème avec fardeleuse. Les docs disent que bundler est supposé fonctionner à partir du répertoire où se trouve le Gemfile, mais cela ne semble pas être le cas. Je me suis débrouillé pour créer ma propre tâche de bundle et modifier explicitement le répertoire avant d'exécuter le bundle.

Changer votre #require 'bundler/capistrano' à ce fichier dans votre 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