7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/stable/services/process_manager.rb', line 7
def self.start(target)
app = target.is_a?(String) ? AppRegistry.fetch(target) : target
path = app[:path]
port = app[:port]
ruby = app[:ruby]
gemset = Stable::Services::Ruby.gemset_for(app)
if ruby && gemset
Stable::Services::Ruby.ensure_rvm!
system("bash -lc 'rvm #{ruby}@#{gemset} --create do true'")
rvm_cmd = "rvm #{ruby}@#{gemset} do"
elsif ruby
rvm_cmd = "rvm #{ruby} do"
else
rvm_cmd = nil
end
log_file = File.join(path, 'log', 'stable.log')
FileUtils.mkdir_p(File.dirname(log_file))
cmd = if rvm_cmd
"cd \"#{path}\" && #{rvm_cmd} bundle exec rails s -p #{port} -b 127.0.0.1"
else
"cd \"#{path}\" && bundle exec rails s -p #{port} -b 127.0.0.1"
end
pid = spawn('bash', '-lc', cmd, out: log_file, err: log_file)
Process.detach(pid)
AppRegistry.update(app[:name], started_at: Time.now.to_i, pid: pid)
pid
end
|