私のマシンには2つのアプリがあります。
各アプリ (サーバー) には独自の 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
私のサーバーは単にルビバージョンをファイルに書き込んでいます ( /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"
そしてそれはうまくいきました。