Class: Daemontools::Builder
- Inherits:
-
Object
- Object
- Daemontools::Builder
- Defined in:
- lib/daemontools/service_builder.rb
Instance Attribute Summary collapse
-
#all_roles ⇒ Object
Returns the value of attribute all_roles.
-
#change_user_command(cmd) ⇒ Object
Returns the value of attribute change_user_command.
-
#curr_service_name ⇒ Object
Returns the value of attribute curr_service_name.
-
#delete_command(cmd) ⇒ Object
Returns the value of attribute delete_command.
-
#environment ⇒ Object
Returns the value of attribute environment.
-
#services ⇒ Object
Returns the value of attribute services.
-
#ulimit(opt, val) ⇒ Object
Returns the value of attribute ulimit.
-
#write_time(val) ⇒ Object
Returns the value of attribute write_time.
Instance Method Summary collapse
- #delete_services(services) ⇒ Object
- #find_services_by_name(service_names, role) ⇒ Object
- #gen(roles, env) ⇒ Object
-
#initialize(filename) ⇒ Builder
constructor
A new instance of Builder.
- #run_command(command_name, param) ⇒ Object
- #service(name, opts = {}, &block) ⇒ Object
- #start_service(command, service = nil, env = nil) ⇒ Object
Constructor Details
#initialize(filename) ⇒ Builder
Returns a new instance of Builder.
7 8 9 10 11 12 13 14 |
# File 'lib/daemontools/service_builder.rb', line 7 def initialize(filename) @all_roles = [] @services = {} @change_user_command = 'setuidgid' @ulimit = {} @write_time = true eval(File.read(filename), binding()) end |
Instance Attribute Details
#all_roles ⇒ Object
Returns the value of attribute all_roles.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def all_roles @all_roles end |
#change_user_command(cmd) ⇒ Object
Returns the value of attribute change_user_command.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def change_user_command @change_user_command end |
#curr_service_name ⇒ Object
Returns the value of attribute curr_service_name.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def curr_service_name @curr_service_name end |
#delete_command(cmd) ⇒ Object
Returns the value of attribute delete_command.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def delete_command @delete_command end |
#environment ⇒ Object
Returns the value of attribute environment.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def environment @environment end |
#services ⇒ Object
Returns the value of attribute services.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def services @services end |
#ulimit(opt, val) ⇒ Object
Returns the value of attribute ulimit.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def ulimit @ulimit end |
#write_time(val) ⇒ Object
Returns the value of attribute write_time.
5 6 7 |
# File 'lib/daemontools/service_builder.rb', line 5 def write_time @write_time end |
Instance Method Details
#delete_services(services) ⇒ Object
75 76 77 |
# File 'lib/daemontools/service_builder.rb', line 75 def delete_services(services) services.each { |service| Daemontools.delete(service, @delete_command) } end |
#find_services_by_name(service_names, role) ⇒ Object
79 80 81 |
# File 'lib/daemontools/service_builder.rb', line 79 def find_services_by_name(service_names, role) @services[role].select { |service| service_names.include?(service[0]) } end |
#gen(roles, env) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/daemontools/service_builder.rb', line 37 def gen(roles, env) @environment = env roles.split(',').each do |role| (@services[role.to_sym] || []).each do |service| @curr_service_name = service[0].to_s start_service(service[1]) end end end |
#run_command(command_name, param) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/daemontools/service_builder.rb', line 16 def run_command(command_name, param) self.class.send(:define_method, command_name) do |task, = {}| p = param.gsub(':task', task) .each { |key, val| p.gsub!(":#{key}", val.to_s) } p end end |
#service(name, opts = {}, &block) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/daemontools/service_builder.rb', line 24 def service(name, opts = {}, &block) if opts[:roles] opts[:roles].each do |role| role = role.to_sym @all_roles << role unless @all_roles.member?(role) @services[role] = [] unless @services[role] @services[role] << [name, block.call] end else raise "service without roles" end end |
#start_service(command, service = nil, env = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/daemontools/service_builder.rb', line 59 def start_service(command, service = nil, env = nil) @environment = env if env @curr_service_name = service if service Daemontools.stop(@curr_service_name) if Daemontools.exists?(@curr_service_name) @command = command.gsub(':environment', @environment) template_path = File.(File.dirname(__FILE__)) + '/../../templates/rvm.erb' cmd = ERB.new(File.read(template_path)).result(binding()) Daemontools.add(@curr_service_name, cmd, { :change_user_command => @change_user_command, :ulimit => @ulimit, :write_time => @write_time }) Daemontools.make_run_status_up(@curr_service_name) Daemontools.start(@curr_service_name) end |