I have a hard fast rule that you should never use rbenv, rvm or any other ruby switcher on production or staging boxes. Ruby switching is a developers tool. Use one and one only version of ruby on a remote box. If you have two apps that need to use different rubies, and you want to make them work on the same box. Invest the time required to make the code use the same version of ruby instead of futzing with a ruby switcher. If you can't make them use the same version of ruby, in these days of cloud computing, put the apps on different servers. If you are so hard up for hardware then use something like LXC to provide that isolation.
rvm and rbenv are just examples of providing isolation. You can provide isolation by putting them on different servers or virtual servers and you will save yourself a lot of pain, and incidentally downtime. In production I want the fewest dependencies, and when you add a ruby switcher you are adding a very fickle, complicated, and in my experience unstable dependency. That being said, try using the full path to bundle in your rake command. There are also examples of adding to the path by overriding the call to the default shell. I don't use cap3 yet so I can only speculate that the following may work in this one instance. I can pretty much guarantee this won't be the last time using a ruby switcher is going to bite you. SSHKit.config.command_map[:rake] = "/usr/local/rvm/gems/ruby-2.1.0/bin/bundle exec rake tmp:cache:clear" On Sat, Feb 1, 2014 at 1:10 AM, Douglas Magnenat <[email protected] > wrote: > I also got another answer on stackoverflow. I tried your solution and the > one on Stackoverflow. Both do work. > So as I don't know if it is linked to this > bug<https://github.com/capistrano/capistrano/issues/639>referenced on > stackoverflow, so I post the > link<http://stackoverflow.com/questions/21429709/why-does-capistrano-execute-rake-from-usr-bin-env-instead-of-usr-local-rvm-g> > to > the other answer (just in case) : > > SSHKit.config.command_map[:rake] = "bundle exec rake tmp:cache:clear" > > > Le mercredi 29 janvier 2014 12:13:00 UTC+1, Douglas Magnenat a écrit : >> >> *Versions:* >> Ruby 2.1 >> Capistrano 3.0.1 >> Rake 10.1.1/ Rails 3.2.16 / rvm 1.25.12 >> >> *I'm using rvm on myserver to facilitate ruby installation, but I install >> and udate manually the gems with user rvm_admin.* >> *rvm has been installed 'system wide'.* >> *I don't use capistrano-rvm and I don't use capistrano-rails, as I >> manually update ruby, gems, assets, and migrations.* >> >> >> *Platform:* >> Working on XUbuntu 12.04.4 LTS >> Deploying to Debian Wheezy >> >> Logs: >> >> - Please past logs (as completely as possible to a 3rd party pasting >> service such as pastie.org) >> >> Files: >> >> - Capfile >> >> require 'capistrano/setup' >> require 'capistrano/deploy' >> Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } >> >> - deploy.rb >> >> set :application, 'odpf' >> set :repo_url, '[email protected]:myrepo/myapp.git' >> set :branch, 'production_1.01' >> set :deploy_to, '/var/www/odpf' >> set :pty, false >> set :scm, :git >> set :format, :pretty >> >> >> namespace :deploy do >> desc 'Restart application' >> task :restart do >> on roles(:app), in: :sequence, wait: 5 do >> # Your restart mechanism here, for example: >> # l'exemple correspond à ce qu'il faut pour restart passenger : >> # http://www.modrails.com/documentation/Users%20guide% >> 20Apache.html#_redeploying_restarting_the_ruby_on_rails_application >> execute :mkdir, '-p', "#{release_path}/tmp" >> 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: >> # Conformément à : http://guides.rubyonrails.org/ >> v3.2.14/command_line.html#tmp >> within release_path do >> execute :rake, 'tmp:cache:clear' >> end >> end >> end >> >> >> # Create symlink to database.yml after publication >> before 'deploy:published', 'db_access:create_symlinks' >> >> >> after :finishing, 'deploy:cleanup' >> end >> >> - Stage files (production.rb, staging.rb) >> >> set :stage, :production >> server 'myserver.net', user: 'rvm_admin', roles: %w{web app db} >> >> set :ssh_options, { forward_agent: true, port: 8888 } >> >> >> When I perform a cap production deploy, It goes well untill the end of >> the output : >> >> INFO [0a0dbcb0] Running /usr/bin/env rake tmp:cache:clear on phisa-odpf- >> vd.vserver.nimag.net >> DEBUG [0a0dbcb0] Command: cd /var/www/odpf/releases/20140129101515 && >> /usr/bin/env rake tmp:cache:clear >> DEBUG [0a0dbcb0] /usr/bin/env: rake >> DEBUG [0a0dbcb0] : Aucun fichier ou dossier de ce type >> cap aborted! >> rake stdout: Nothing written >> rake stderr: Nothing written >> /home/douglas/.rvm/gems/ruby-2.1.0@rails3/gems/sshkit-1.0.0/lib/sshkit/ >> command.rb:94:in `exit_status=' >> /home/douglas/.rvm/gems/ruby-2.1.0@rails3/gems/sshkit-1.0. >> 0/lib/sshkit/backends/netssh.rb:125:in `block (4 levels) in _execute' >> /home/douglas/.rvm/gems/ruby-2.1.0@rails3/gems/net-ssh-2.7. >> 0/lib/net/ssh/connection/channel.rb:551:in `call' >> >> >> Capistrano try to execute rake from /usr/bin/env >> >> but my gem is installed here : >> >> rvm_admin@myserver:/var/www/odpf/current$ bundle show rake >> /usr/local/rvm/gems/ruby-2.1.0/gems/rake-10.1.1 >> rvm_admin@myserver:/var/www/odpf/current$ which rake >> /usr/local/rvm/gems/ruby-2.1.0/bin/rake >> >> What am I doing wrong ? >> >> -- > You received this message because you are subscribed to the Google Groups > "Capistrano" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web, visit > https://groups.google.com/d/msgid/capistrano/53f49611-17d8-4c7b-81e4-fad8254a8bd1%40googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "Capistrano" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web, visit https://groups.google.com/d/msgid/capistrano/CABV8oima-sp-wR3wNWZ8dH6ypHhczT9c0AV%2BSiF3jk5g7smL8w%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.
