Ruby on rails 如何更改Capistrano 3中的绑定器?

Ruby on rails 如何更改Capistrano 3中的绑定器?,ruby-on-rails,ruby,capistrano,bundler,Ruby On Rails,Ruby,Capistrano,Bundler,我正在多用户、多服务器环境(Site5)中部署。 我正在部署rails 4应用程序。默认环境是ruby 1.8.7、rails 3.0。 可以访问本地版本的ruby, 在调用bundler之前,一切正常。 以下是错误片段: INFO [4439d586] Running /usr/bin/env bundle install --path /home/username/apps/todos/shared/bundle --without development test --deployment

我正在多用户、多服务器环境(Site5)中部署。
我正在部署rails 4应用程序。默认环境是ruby 1.8.7、rails 3.0。
可以访问本地版本的ruby, 在调用bundler之前,一切正常。
以下是错误片段:

INFO [4439d586] Running /usr/bin/env bundle install --path /home/username/apps/todos/shared/bundle --without development test --deployment --quiet as username@dirktaylor.ca
DEBUG [4439d586] Command: cd /home/username/apps/todos/releases/20160121174533 && ( export RUBY_BIN_PATH="/usr/local/ruby20/bin" PATH="/usr/local/ruby20/bin:/usr/username/ruby/gems/gems/bundler-1.11.2/exe:$PATH" ; /usr/bin/env bundle install --path /home/username/apps/todos/shared/bundle --without development test --deployment --quiet )
DEBUG [4439d586]        Gem::InstallError: i18n requires Ruby version >= 1.9.3.
DEBUG [4439d586]        An error occurred while installing i18n (0.7.0), and Bundler cannot continue.
Make sure that `gem install i18n -v '0.7.0'` succeeds before bundling.
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as username@dirktaylor.ca: bundle exit status: 5
bundle stdout: Gem::InstallError: i18n requires Ruby version >= 1.9.3.
An error occurred while installing i18n (0.7.0), and Bundler cannot continue.
Make sure that `gem install i18n -v '0.7.0'` succeeds before bundling.
bundle stderr: Nothing written
如您所见,我在调用bundle命令之前设置环境变量

所以,这是我想的…
由于Capistrano 3正在使用
/usr/bin/env
/usr/bin/env bundle install…
执行所有操作,因此它找不到要使用的bundler的正确版本

username@dirktaylor.ca [~2]# /usr/bin/env bundle -v;whereis bundle
Bundler version 1.2.1
bundle: /usr/bin/bundle
(注意:/usr/bin/env链接到/bin/env)

我已经安装了bundler(
gem install bundler
)的当前用户,它现在位于~/ruby/gems/gems/bundler-1.11.2,可执行脚本位于~/ruby/gems/gems/bundler-1.11.2/exe/bundle

那么?现在怎么办?
1) 如何执行此版本的bundler?
2) 另外,在脚本内部,它调用
#/usr/bin/env ruby
。我应该将其更改为正确的ruby路径吗? 3) 我在其他地方看到了第2章的解决方案:

set :bundle_cmd, "/usr/username/ruby/gems/gems/bundler-1.11.2/exe/bundle"
set :bundle_dir, "/usr/username/ruby/gems/gems/bundler-1.11.2"
所以问题依然存在:如何更改Capistrano3中的bundler


(最后:没有rvm可以解决这个问题吗?

在Capistrano 3中,有一个a的概念,允许您覆盖用于任何任意命令的字符串。如果您想将
bundle
映射到
/usr/username/ruby/gems/gems/bundler-1.11.2/exe/bundle
,我们假设一下

你是这样做的:

# Put this in deploy.rb or production.rb, etc.
SSHKit.config.command_map[:bundle] = "/usr/username/ruby/gems/gems/bundler-1.11.2/exe/bundle"