我的机器上有两个应用程序。
每个应用程序(服务器)都有自己的 gemset,并且可以在不同的 ruby 版本上运行。
我将使用安装在它自己的 gemset 中的上帝来管理这些应用程序。
我的上帝配置文件config.god
如下所示:
God.watch do |w|
current_path = "/home/vagrant/server-1"
w.name = "server 1"
w.start = "ruby #{current_path}/simple-server.rb"
w.keepalive
end
God.watch do |w|
current_path = "/home/vagrant/server-2"
w.name = "server 2"
w.start = "ruby #{current_path}/simple-server.rb"
w.keepalive
end
我的服务器只是将 ruby 版本写入文件(/home/vagrant/server-2/simple-server.rb
):
require "date"
loop do
# simple console output
puts "Hello on #{RUBY_VERSION}, #{RUBY_PATCHLEVEL}, #{RUBY_PLATFORM}, #{RUBY_RELEASE_DATE}"
# Specify the name of the log file
log_file = File.join File.expand_path( File.dirname(__FILE__) ), "testfile.txt"
# Write the log into the file
File.open( log_file, 'a') do |f|
date = DateTime.now
date = date.strftime("%H:%M:%S")
f.puts "#{date} on #{RUBY_VERSION}, #{RUBY_PATCHLEVEL}, #{RUBY_PLATFORM}, #{RUBY_RELEASE_DATE}"
end
sleep 2
end
我用god -c config.god
.
问题是我的应用程序没有使用 .rvmrc 中指定的 ruby 版本运行。
我也试过:
~/.rvm/bin/wrapped_god -d config.god -D
rvmsudo ~/.rvm/bin/wrapped_god -d config.god -D
rvmsudo god -d config.god -D
这种情况有解决方案吗?
编辑2012.08.27:
我已将我的上帝配置更改如下:
w.start="~/.rvm/bin/rvm in #{current_path} do ruby simple-server.rb"
它奏效了。