我有一个使用 capistrano 部署的 Ruby 应用程序(非 Rails)。我可以 ssh 进入我的服务器,cd
进入/current
目录并使用命令启动它
ruby tweet_tracker.rb start
但是,如果我 cd 升级并运行
ruby current/tweet_tracker.rb start
我得到错误:
/home/deploy/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- tweetstream (LoadError)
from /home/deploy/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/deploy/dev/tweet_tracker/current/tweet_tracker.rb:4:in `<main>'
现在这显然是因为我在每个目录中使用不同的 ruby 版本运行命令。
我.ruby-version
在应用程序中有一个文件,它指定ruby-1.9.3-p392
. 我的 capistrano 部署脚本指定set :rvm_ruby_string, '1.9.3-p392'
并且当它bundle install
作为部署过程的一部分运行时,它会安装 193-p392 的 gem。
问题是,当我尝试从应用程序目录之外启动应用程序时,它使用默认的 Ruby(由 RVM 设置为 193 的较小版本)。
如何确保应用程序.ruby-version
在运行时使用它指定的 Ruby 版本?
我宁愿不更改 RVM 的默认 Ruby 版本,因为系统上正在运行其他应用程序。