行。所以我正在尝试使用capistrano部署新版本的应用程序。我正在使用rbenv,安装了1.8.7(对于旧应用程序)和2.4.1安装(对于新应用程序)。我的Capfile包括:
require "capistrano/rbenv"
和我的deploy.rb:
set :rbenv_type, :user
set :rbenv_ruby, "2.4.1"
namespace :deploy do
desc "Show ruby version"
task :ruby_version do
on roles(:all) do |h|
execute "ruby --version"
execute "rbenv versions"
end
end
end
运行cap production deploy:ruby_version
会产生:
00:00 deploy:ruby_version
01 ruby --version
01 ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
✔ 01 deploy@example.com 0.390s
02 rbenv versions
02 system
02 * 1.8.7-p370 (set by /home/deploy/.rbenv/version)
02 2.4.1
✔ 02 deploy@example.com 0.371s
我尝试过各种各样的事情 - set :default_env, {"RBENV_VERSION => "2.4.1"}
,删除/home/deploy/.rbenv/version
(这使我使用system
ruby) - 但似乎没有任何东西让rbenv_ruby覆盖其他设置。
将rbenv_ruby
设置为不存在的版本会引发错误,因此它似乎在做某事。
答案 0 :(得分:2)
好。而不是
execute "rbenv versions"
我想:
execute :rbenv, "versions"
两者看起来很相似,但完全不相同:
http://capistranorb.com/documentation/getting-started/tasks/
tl; dr:执行(:bundle,:install)和执行('捆绑安装')行为不一样!
siiiiiiiiiiiiiiigh