【发布时间】:2013-04-18 11:46:41
【问题描述】:
我有一个使用 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 版本,因为系统上正在运行其他应用程序。
【问题讨论】:
-
您可以创建一个脚本来 cd 到正确的文件夹并启动应用程序吗?
标签: ruby rvm capistrano rvm-capistrano