Class: Trinidad::Daemon::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/trinidad_daemon/configuration.rb

Instance Method Summary collapse

Constructor Details

#initialize(stdin = STDIN, stdout = STDOUT) ⇒ Configuration

Returns a new instance of Configuration.



9
10
11
12
# File 'lib/trinidad_daemon/configuration.rb', line 9

def initialize(stdin = STDIN, stdout = STDOUT)
  @stdin = stdin
  @stdout = stdout
end

Instance Method Details

#collect_windows_opts(options_ask) ⇒ Object



22
23
24
25
26
27
# File 'lib/trinidad_daemon/configuration.rb', line 22

def collect_windows_opts(options_ask)
  options_ask << '(separated by `;`)'
  name_ask = 'Service name? {Alphanumeric and spaces only}'
  name_default = 'Trinidad'
  @trinidad_name = ask(name_ask, name_default)
end

#configureObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/trinidad_daemon/configuration.rb', line 39

def configure
  @app_path = ask_path('Application path?')
  @trinidad_options = ["-d #{@app_path}"]
  options_ask = 'Trinidad options?'
  options_default = '-e production'
  collect_windows_opts(options_ask) if windows?

  @trinidad_options << ask(options_ask, options_default)
  @jruby_home = ask_path('JRuby home?', default_jruby_home)
  @ruby_compat_version = ask('Ruby 1.8.x or 1.9.x compatibility?', default_ruby_compat_version)
  @jruby_opts = configure_jruby_opts
  initialize_paths

  windows? ? configure_windows_service : configure_unix_daemon
  puts 'Done.'
end

#configure_jruby_optsObject



29
30
31
32
33
34
35
36
37
# File 'lib/trinidad_daemon/configuration.rb', line 29

def configure_jruby_opts
  opts = []
  opts << "-Djruby.home=#{@jruby_home}"
  opts << "-Djruby.lib=#{File.join(@jruby_home, 'lib')}"
  opts << "-Djruby.script=jruby"
  opts << "-Djruby.daemon.module.name=Trinidad"
  opts << "-Djruby.compat.version=#{@ruby_compat_version}"
  opts
end

#configure_unix_daemonObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/trinidad_daemon/configuration.rb', line 56

def configure_unix_daemon
  @jsvc = ask_path('Jsvc path?', `which jsvc`.chomp)
  @java_home = ask_path('Java home?', default_java_home)
  @output_path = ask_path('init.d output path?', '/etc/init.d')
  @pid_file = ask_path('pid file?', '/var/run/trinidad/trinidad.pid')
  @log_file = ask_path('log file?', '/var/log/trinidad/trinidad.log')

  daemon = ERB.new(
    File.read(
      File.expand_path('../../init.d/trinidad.erb', File.dirname(__FILE__))
    )
  ).result(binding)

  puts "Moving trinidad to #{@output_path}"
  tmp_file = "#{@output_path}/trinidad"
  File.open(tmp_file, 'w') do |file|
    file.write(daemon)
  end

  FileUtils.chmod(0744, tmp_file)
end

#configure_windows_serviceObject



78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/trinidad_daemon/configuration.rb', line 78

def configure_windows_service
  prunsrv = File.join(@jars_path, 'prunsrv.exe')
  command = %Q{//IS//Trinidad --DisplayName="#{@trinidad_name}" \
--Install="#{prunsrv}" --Jvm=auto --StartMode=jvm --StopMode=jvm \
--StartClass=com.msp.procrun.JRubyService --StartMethod=start \
--StartParams="#{@trinidad_daemon_path};#{@trinidad_options.join(";")}" \
--StopClass=com.msp.procrun.JRubyService --StopMethod=stop --Classpath="#{@classpath.join(";")}" \
--StdOutput=auto --StdError=auto \
--LogPrefix="#{@trinidad_name.downcase.gsub(/\W/,'')}" \
++JvmOptions="#{@jruby_opts.join(";")}"
}
  system "#{prunsrv} #{command}"
end

#initialize_pathsObject



14
15
16
17
18
19
20
# File 'lib/trinidad_daemon/configuration.rb', line 14

def initialize_paths
  @trinidad_daemon_path = File.expand_path('../../trinidad_daemon.rb', __FILE__)
  @jars_path = File.expand_path('../../../trinidad-libs', __FILE__)

  @classpath = ['jruby-jsvc.jar', 'commons-daemon.jar'].map { |jar| File.join(@jars_path, jar) }
  @classpath << File.join(@jruby_home, 'lib', 'jruby.jar')
end