我有一个我用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版本.ruby-version
?
我宁愿不更改RVM的默认Ruby版本,因为系统上还有其他应用程序在运行。
你可以创建一个脚本来cd到正确的文件夹并启动应用程序? – 2013-04-24 19:13:50