[英]How to get Capistrano 3 to use RVM ruby?
的Gemfile:
gem 'capistrano', '~> 3.0.0'
gem 'capistrano-rails'
gem 'capistrano-bundler'
gem 'capistrano-rvm'
gem 'capistrano3-puma'
Deploy.rb:
set :rvm_type, :user
set :rvm_ruby_version, '2.1.1'
set :default_env, { rvm_bin_path: '~/.rvm/bin' }
Production.rb
namespace :rails do
desc "Open the rails console on primary app server"
task :console do
on roles(:app), primary: true do
execute_interactively "#{current_path}/script/rails console RAILS_ENV=production"
end
end
def execute_interactively(command)
cmd = "ssh -l deploy 255.255.255.255 -p 21 -t 'cd #{deploy_to}/current && #{command}'"
info "Connecting to 255.255.255.255"
exec cmd
end
end
Capfile:
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/puma'
require 'whenever/capistrano'
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
當我運行cap production rvm:check
輸出是:
rvm 1.25.19 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
system
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
它是否應該使用user
而不是system
因為我已經指定了rvm_type
?
當我運行cap production rails:console
然后我得到:
INFO Connecting to 255.255.255.255
/usr/bin/env: ruby: No such file or directory
Connection to 255.255.255.255 closed.
我不認為您了解capistrano-rvm的工作原理。
capistrano-rvm的工作原理是確定RVM安裝的位置,然后使用相關的映射命令為 capistrano命令添加前綴。 命令映射是SSHKit的一部分。
Capistrano-rvm默認將gem rake ruby bundle映射到rvm-prefixed版本。 這意味着每當capistrano遇到命令時,例如以execute :bundle
的形式,它將替換它,例如~/.rvm/bin/rvm 2.1.1 do bundle
你已經在你設計的execute_interactively
命令中完全支持整個機制,該命令用於指定內聯命令。 事實上,通過建立自己的SSH會話,你已經完全支持了整個capistrano的美麗!
整個set :default_env, { rvm_bin_path: '~/.rvm/bin' }
根本不需要,這就是你使用capistrano-rvm gem的原因。
至於為什么cap production rvm:check
是顯示system
是因為在這種情況下術語system
過載。 您認為在這種情況下意味着“這是什么樣的rvm設置方案, /usr/local/rvm
安裝或~/.rvm
安裝”
它實際意味着來自這段代碼 ,即它將RVM中列出的ruby版本檢查為當前的ruby ,服務器上默認安裝的ruby稱為系統ruby
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.