2013-10-26 11 views
14

Ich habe ein Problem bei der Bereitstellung meiner App mit Capistrano v3. Wenn ich laufen '$ cap Produktion deploy' sehe ich einen Fehler ...Capistrano v3 konnte keinen Bundler finden

INFO [825ad68d] Running /usr/bin/env bundle --gemfile /home/username/www/myapp/releases/20131026181031/Gemfile --path /home/username/www/myapp/shared/bundle --deployment --quiet --binstubs /home/username/www/myapp/shared/bin --without development test on myhostname.com 
DEBUG [825ad68d] Command: cd /home/username/www/myapp/releases/20131026181031 && (RAILS_ENV=production /usr/bin/env bundle --gemfile /home/username/www/myapp/releases/20131026181031/Gemfile --path /home/username/www/myapp/shared/bundle --deployment --quiet --binstubs /home/username/www/myapp/shared/bin --without development test) 
DEBUG [825ad68d] /usr/bin/env: 
DEBUG [825ad68d] bundle 
DEBUG [825ad68d] : No such file or directory 

Aber wenn ich laufe den letzten Befehl ...

cd /home/username/www/myapp/releases/20131026181031 && (RAILS_ENV=production /usr/bin/env bundle --gemfile /home/username/www/myapp/releases/20131026181031/Gemfile --path /home/username/www/myapp/shared/bundle --deployment --quiet --binstubs /home/username/www/myapp/shared/bin --without development test) 

... via ssh auf meinem Server I don sehe keine Fehler.

Hier ist Umgebung meinem Server:

  • Ubuntu 13.04
  • rvm 1.23.5
  • rubygems 1.8.25
  • Bündler 1.3.5
  • Rubin 1.9.3p448
  • Capistrano (3.0.0)
  • capistrano-bundler (1.0.0)
  • Capistrano-Schienen (1.0.0)

ist hier ein Stück meiner Gemfile die Edelsteine ​​ Capistrano der umfasst

... 
group :development do 
    ... 
    # Deploy with Capistrano 
    gem 'capistrano', '~> 3.0.0' 
    gem 'capistrano-rails' 
    gem 'capistrano-bundler' 
end 
... 

Bitte siehe unten Capistrano Konfiguration:

Capfile

require 'capistrano/setup' 
require 'capistrano/deploy' 
require 'capistrano/bundler' 
require 'capistrano/rails/assets' 
require 'capistrano/rails/migrations' 

Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } 

config/deploy.rb

set :application, 'myapp' 
set :repo_url, "/home/username/repository/#{fetch(:application)}.git" 
set :deploy_to, "/home/usename/www/#{fetch(:application)}" 
set :scm, :git 
set :branch, "master" 
set :format, :pretty 
set :use_sudo, false 

set :linked_files, %w{config/database.yml} 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} 

set :keep_releases, 5 

SSHKit.config.command_map[:rake] = "bundle exec rake" 
SSHKit.config.command_map[:rails] = "bundle exec rails" 

namespace :deploy do 

    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     # Your restart mechanism here, for example: 
     # execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 

    after :restart, :clear_cache do 
    on roles(:web), in: :groups, limit: 3, wait: 10 do 
     # Here we can do anything such as: 
     # within release_path do 
     # execute :rake, 'cache:clear' 
     # end 
    end 
    end 

    after :finishing, 'deploy:cleanup' 
end 

config/deploy/production.rb

set :stage, :production 

set :bundle_gemfile, -> { release_path.join('Gemfile') } 
set :bundle_dir, -> { shared_path.join('bundle') } 
set :bundle_flags, '--deployment --quiet' 
set :bundle_without, %w{development test}.join(' ') 
set :bundle_binstubs, -> { shared_path.join('bin') } 
set :bundle_roles, :all 

role :app, %w{myhostname.com} 
role :web, %w{myhostname.com} 
role :db, %w{myhostname.com} 

server 'myhostname.com', user: 'username', roles: %w{web app}, my_property: :my_value 

fetch(:default_env).merge!(rails_env: :production) 

Bitte helfen Sie mir.

GELÖST

Ich habe mein Problem, das durch folgende Schritte gelöst:

Add Capistrano-rvm in Gemfile und tun

... 
group :development do 
    ... 
    gem 'capistrano', '~> 3.0.0' 
    gem 'capistrano-rails' 
    gem 'capistrano-bundler' 
    gem 'capistrano-rvm' 
end 
... 

diese Zeile hinzufügen in Capfile

require 'capistrano/rvm' 

Fügen Sie diese Zeilen in die Datei deploy.rb ein.

set :rvm_ruby_version, '1.9.3-p448' 
set :default_env, { rvm_bin_path: '~/.rvm/bin' } 
SSHKit.config.command_map[:rake] = "#{fetch(:default_env)[:rvm_bin_path]}/rvm ruby-#{fetch(:rvm_ruby_version)} do bundle exec rake" 
+1

möglich Duplikat [Bundle nicht installiert Arbeit von capistrano] (http://stackoverflow.com/questions/19363077/bundle-install-doesnt-work-from-capistrano) –

+0

nach dem Hinzufügen von Edelstein 'capistrano-rvm' in Gemfile, führen Bund, dann fügen Sie erfordern' capistrano/rvm' in 'Capfile' –

Antwort

7

Es scheint, dass Sie capistrano-rvm hinzugefügt hatten . Es wird sich um Ihre Rubin und Bundler Pfade kümmern.

bundle install doesn't work from capistrano

+0

Ich fügte capistrano-rvm hinzu und es löste das Problem, aber ein anderes Problem erschien. Ich denke, dieser und der vorherige sind ähnlich (siehe unten): 'DEBUG [3686e995] Befehl: cd/home/benutzername/www/myapp/releases/20131027130646 && (RVM_BIN_PATH = ~/.rvm/bin RAILS_ENV = ~/.rvm/bin/rvm ruby-1.9.3-p448 machen Rake-Assets: vorkompilieren) DEBUG [3686e995] \t /home/username/.rvm/gems/[email protected]/gems/budler-1.3 .5/lib/bundler/spec_set.rb: 92: in Block in materialisieren ' DEBUG [3686e995]: DEBUG [3686e995] Konnte i18n-0.6.1 in keiner der Quellen finden DEBUG [3686e995] ( ) DEBUG [3686e995] \t Bundler :: GemNotFound' – ekondr

+0

@ekondr Wie Sie sehen, haben Sie '' 'RAILS_ENV''' nicht angegeben, versuchen' '' set: rails_env, "production" '' 'statt' '' hinzuzufügen fetch (: default_env) .merge! (rails_env:: production) '' ' – freemanoid

+0

Ich habe 'set: rails_env," production "' anstelle von 'fetch (: default_env) .merge! (Rails_env:: production)' hinzugefügt, aber nichts hat sich geändert. – ekondr

0

... via ssh auf meinem Server Ich sehe keine Fehler.

Das Problem, das Sie sehen, liegt wahrscheinlich an fehlenden rbenv, chruby oder rvm. Dies ist ein wirklich gemeinsamer ein und es wird hier dokumentiert, wie zu beheben, zu überprüfen und/oder Umgehen (je nachdem, was für Ihren Fall funktioniert) hier:

+1

Ich sehe keine Anweisungen zu diesem Link für die Lösung. Gute Erklärung für das Problem. – Altonymous

0

Wenn Sie System rvm (path =/usr/local/RVM/bin/RVM), stellen Capistrano-Bündler wie unten

set :rvm_type, :system 
set :rvm_ruby_version, 'ruby-<version>@<gemset>' 
Verwandte Themen