Class: Capistrano::Systemd::MultiService::SystemService
- Inherits:
-
Plugin
- Object
- Plugin
- Capistrano::Systemd::MultiService::SystemService
- Defined in:
- lib/capistrano/systemd/multiservice/system_service.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#app ⇒ Object
readonly
Returns the value of attribute app.
Instance Method Summary collapse
- #daemon_reload ⇒ Object
- #default_units_dir ⇒ Object
- #define_tasks ⇒ Object
-
#initialize(app) ⇒ SystemService
constructor
A new instance of SystemService.
- #nsp ⇒ Object
- #prefix ⇒ Object
- #register_hooks ⇒ Object
- #remove ⇒ Object
- #set_defaults ⇒ Object
- #setup ⇒ Object
- #systemctl(*args) ⇒ Object
- #validate ⇒ Object
Constructor Details
#initialize(app) ⇒ SystemService
Returns a new instance of SystemService.
11 12 13 14 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 11 def initialize(app) @app = app super() end |
Instance Attribute Details
#app ⇒ Object (readonly)
Returns the value of attribute app.
9 10 11 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 9 def app @app end |
Instance Method Details
#daemon_reload ⇒ Object
98 99 100 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 98 def daemon_reload systemctl :"daemon-reload" end |
#default_units_dir ⇒ Object
74 75 76 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 74 def default_units_dir "/etc/systemd/system" end |
#define_tasks ⇒ Object
24 25 26 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 24 def define_tasks eval_rakefile File.("../../../tasks/systemd/multiservice/system_service.rake", __FILE__) end |
#nsp ⇒ Object
16 17 18 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 16 def nsp @app.to_sym end |
#prefix ⇒ Object
20 21 22 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 20 def prefix "systemd_#{@app}" end |
#register_hooks ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 28 def register_hooks after "deploy:check", "systemd:#{nsp}:validate" after "systemd:#{nsp}:setup", "systemd:#{nsp}:daemon-reload" after "systemd:#{nsp}:setup", "systemd:#{nsp}:enable" before "systemd:#{nsp}:remove", "systemd:#{nsp}:disable" after "systemd:#{nsp}:remove", "systemd:#{nsp}:daemon-reload" end |
#remove ⇒ Object
85 86 87 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 85 def remove backend.sudo :rm, '-f', '--', fetch(:"#{prefix}_units_dest") end |
#set_defaults ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 36 def set_defaults set_if_empty :"#{prefix}_role", ->{ :app } set_if_empty :"#{prefix}_units_src", ->{ Dir["config/systemd/#{@app}{,@}.*.erb"].sort } set_if_empty :"#{prefix}_units_dir", ->{ default_units_dir } set_if_empty :"#{prefix}_units_dest", ->{ fetch(:"#{prefix}_units_src").map{|src| "%s/%s_%s" % [ fetch(:"#{prefix}_units_dir"), fetch(:application), File.basename(src, ".erb") ] } } set_if_empty :"#{prefix}_instances", ->{ if fetch(:"#{prefix}_units_dest").map{|dst| File.basename(dst) }.find{|f| f =~ /@\.service\z/ } 1.times.to_a else nil end } set_if_empty :"#{prefix}_service", ->{ service = fetch(:"#{prefix}_units_dest").map{|dst| File.basename(dst) }.find{|f| f =~ /\.service\z/ && f !~ /@\.service\z/ } service || fetch(:"#{prefix}_instance_services") } set_if_empty :"#{prefix}_instance_services", ->{ if fetch(:"#{prefix}_instances") fetch(:"#{prefix}_instances").map{|i| service_template = fetch(:"#{prefix}_units_dest").map{|dst| File.basename(dst) }.find{|f| f =~ /@\.service\z/ } service_template && service_template.sub(/@\.service\z/, "@#{i}.service") } else [] end } end |
#setup ⇒ Object
78 79 80 81 82 83 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 78 def setup fetch(:"#{prefix}_units_src").zip(fetch(:"#{prefix}_units_dest")).each do |src, dest| buf = StringIO.new(ERB.new(File.read(src), nil, 2).result(binding)) setup_service buf, src, dest end end |
#systemctl(*args) ⇒ Object
108 109 110 111 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 108 def systemctl(*args) args.unshift :sudo, :systemctl backend.execute(*args) end |
#validate ⇒ Object
89 90 91 92 93 94 95 96 |
# File 'lib/capistrano/systemd/multiservice/system_service.rb', line 89 def validate fetch(:"#{prefix}_units_dest").each do |dest| unless backend.test("[ -f #{dest} ]") backend.error "#{dest} not found" exit 1 end end end |