Capistrano does not set

Whenever I try to start cap production deploy , it breaks with the following command

 [ebbf9fde] Command: cd /var/www/apps/my_app/releases/20150803171251 && /usr/local/rvm/bin/rvm 2.2.2 do bundle install --path /var/www/apps/my_app/shared/bundle --without development test --deployment --quiet DEBUG [ebbf9fde] /usr/local/rvm/scripts/set: line 19: exec: bundle: not found 

I have a user added “deployment” for this deployment, the output of rvm list is

 $ rvm list rvm rubies =* ruby-2.2.2 [ x86_64 ] # => - current # =* - current && default # * - default 

Further launch of the gem list:

 $ gem list *** LOCAL GEMS *** bigdecimal (1.2.6) bundler-unload (1.0.2) executable-hooks (1.3.2) gem-wrappers (1.2.7) io-console (0.4.3) json (1.8.1) minitest (5.4.3) passenger (5.0.15) power_assert (0.2.2) psych (2.0.8) rack (1.6.4) rake (10.4.2) rdoc (4.2.0) rubygems-bundler (1.4.4) rvm (1.11.3.9) test-unit (3.0.8) 

My Capfile Content

 require 'capistrano/setup' require 'capistrano/deploy' require 'capistrano/rvm' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 

Finally, my deploy.rb file contains the following data.

 lock '3.4.0' set :app_host, 'ip-address-here' set :application, 'my_app' set :repo_url, ' git@example.com :<not_right>/my_app.git' set :rvm_type, :system set :rvm_ruby_version, '2.2.2' set :passenger_rvm_ruby_version, '2.2.2' set :rbenv_ruby, '2.2.2' set :deploy_to, '/var/www/apps/my_app' set :scm, :git set :format, :pretty set :log_level, :debug set :pty, true set :conditionally_migrate, true set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') set :keep_releases, 5 set :migrate_env, "#{ fetch(:stage) }" namespace :deploy do desc 'Restart application' task :restart do on roles(:web), in: :sequence, wait: 5 do execute :mkdir, '-p', release_path.join('tmp') execute :touch, release_path.join('tmp/restart.txt') end end task :httpd_graceful do on roles(:web), in: :sequence, wait: 5 do execute :sudo, "service httpd graceful" end end after :publishing, :restart 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 end namespace :deploy_prepare do desc 'Configure virtual host' task :create_vhost do on roles(:web), in: :sequence, wait: 5 do vhost_redirect_config = <<-EOF Redirect permanent /#{ fetch(:application) } http://#{ fetch(:app_host) }/#{ fetch(:application) }/ EOF vhost_location_config = <<-EOF Alias /#{fetch(:application)} #{fetch(:deploy_to)}/current/public <Location /#{fetch(:application)}> PassengerBaseURI /#{ fetch(:application) } PassengerAppRoot #{ fetch(:deploy_to) }/current/ PassengerRuby /usr/local/rvm/wrappers/ruby-#{ fetch(:rvm_ruby_version) }/ruby RailsEnv #{ fetch(:stage) } </Location> <Directory #{ fetch(:deploy_to) }/current/public > Allow from all Options -MultiViews </Directory> EOF execute :echo, "\"#{ vhost_redirect_config }\"", ">", "/etc/httpd/conf.d/redirects/#{ fetch(:application) }.conf" execute :echo, "\"#{ vhost_location_config }\"", ">", "/etc/httpd/conf.d/apps/#{ fetch(:application) }.conf" end end end after "deploy:updated", "deploy:cleanup" after "deploy:finished", "deploy_prepare:create_vhost" after "deploy_prepare:create_vhost", "deploy:httpd_graceful" after "deploy:httpd_graceful", "deploy:restart" 

I get the following error

 DEBUG [298e6d4e] Command: cd /var/www/apps/oxygen/releases/20150803172155 && /usr/local/rvm/bin/rvm 2.2.2 do bundle install --path /var/www/apps/oxygen/shared/bundle --without development test --deployment --quiet DEBUG [298e6d4e] /usr/local/rvm/scripts/set: line 19: exec: bundle: not found (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as deployer@162.243.131.67 : bundle exit status: 127 bundle stdout: /usr/local/rvm/scripts/set: line 19: exec: bundle: not found bundle stderr: Nothing written SSHKit::Command::Failed: bundle exit status: 127 bundle stdout: /usr/local/rvm/scripts/set: line 19: exec: bundle: not found bundle stderr: Nothing written Tasks: TOP => deploy:updated => bundler:install (See full trace by running task with --trace) The deploy has failed with an error: Exception while executing as deployer@162.243.131.67 : bundle exit status: 127 bundle stdout: /usr/local/rvm/scripts/set: line 19: exec: bundle: not found bundle stderr: Nothing written 
+4
source share
3 answers

Just try the gem install bundler on the server once to install the package in gemset rvm, since it is not in the list of your gem list .

In general, make sure the bundle command runs when you log in to your server via ssh. Capistrano does not do magic, it just logs in via ssh and issues commands. You can always see which capistrano commands are invoked, for example, in your example cd /var/www/apps/oxygen/releases/20150803172155 && /usr/local/rvm/bin/rvm 2.2.2 do bundle install --path /var/www/apps/oxygen/shared/bundle --without development test --deployment --quiet , and try them yourself when something fails.

+8
source

Make sure you have the picker installed in the correct gemset.

I got this error and scratched my head because the package was installed in a standard gemset, but that was not what I used rails for my application.

When I realized this, I thought, “Yes!”

Just thought that I would post it here, hope this helps someone else.

0
source

This did not work for me, gem install bundler

I realized that I did not correctly install the deploy.rb file.

Since I use RVM, I checked the rvm list for the ruby ​​version

  jruby-1.7.19 [ x86_64 ] =* ruby-2.2.1 [ x86_64 ] 

then configure deploy.rb to set :rvm_ruby_version, 'ruby-2.2.1'

0
source

All Articles