luban 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1869e9e885d7001c5da72cb20649de3efe0373aa
4
- data.tar.gz: 4fa710ce988a9dd6abe9b7ab099504851b25f8da
3
+ metadata.gz: aad609d3b76333f4673f7851c43f1d5412d36edd
4
+ data.tar.gz: 45e4da3e1f8f785320562b414f62fff7d100e048
5
5
  SHA512:
6
- metadata.gz: dc8d972f086c40b6bab462d389d685263d56bc44925ca41789ab963defe7c04a6f0348beeffeceb748d5ec8b7e298e676d3a51542ef98bb50b695a08d411862d
7
- data.tar.gz: a657dfb9403ffaeee93f2abe34c1dee081058d7a84053422f6ec2bf700c09b1ae54a2890ec082b305374f1562f9f489e2ecd6eae739d1b005ee5b9983b236eac
6
+ metadata.gz: 8cc42f3e6cf39cb53af1e1ff023d4e883358e3243bafaa44666f09350b1be4e7daccfc90e27d9a8636c74a559b64d3112b26a726b66521b75e60125ffb712ddc
7
+ data.tar.gz: c687a78ff0a2f69ba6765fc821c982a4a62850bfffb081041455f6d126b40383e6d75928adb35bf043509ab55ac8c9f0791a516ac30b17b488d4879c3ebb71e8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Change log
2
2
 
3
+ ## Version 0.6.1 (Jul 11, 2016)
4
+
5
+ New features:
6
+ * Added subcommand #process to grep and show running service/application processes
7
+ * Subcommands #version and #versions now also show the release info for application
8
+ * Used group to monitor/unmonitor service for cluster mode
9
+
3
10
  ## Version 0.6.0 (Jul 08, 2016)
4
11
 
5
12
  New features:
@@ -115,13 +115,16 @@ module Luban
115
115
  protected "#{action}!"
116
116
  end
117
117
 
118
- alias_method :cleanup_packages!, :cleanup!
119
- def cleanup!(args:, opts:)
120
- cleanup_packages!(args: args, opts: opts)
121
- cleanup_application!(args: args, opts: opts)
118
+ { show_current: :controller, show_summary: :controller,
119
+ cleanup: :constructor }.each_pair do |action, worker|
120
+ alias_method "#{action}_packages!", "#{action}!"
121
+ define_method("#{action}!") do |args:, opts:|
122
+ send("#{action}_application!", args: args, opts: opts)
123
+ send("#{action}_packages!", args: args, opts: opts)
124
+ end
125
+ protected "#{action}!"
126
+ dispatch_task "#{action}_application!", to: worker, as: action
122
127
  end
123
- protected :cleanup!
124
- dispatch_task :cleanup_application!, to: :constructor, as: :cleanup
125
128
 
126
129
  def deploy(args:, opts:)
127
130
  show_app_environment
@@ -3,6 +3,54 @@ module Luban
3
3
  class Application
4
4
  class Controller < Worker
5
5
  include Luban::Deployment::Service::Controller::Base
6
+
7
+ def current_release?(_release_tag)
8
+ _release_tag =~ /^#{Regexp.escape(application_version)}/
9
+ end
10
+
11
+ def current_symlinked?(_release_tag)
12
+ _release_tag == release_tag
13
+ end
14
+
15
+ def release_path
16
+ @release_path ||= Pathname.new(readlink(app_path.join('app')))
17
+ end
18
+
19
+ def releases_path
20
+ @releases_path ||= release_path.dirname
21
+ end
22
+
23
+ def release_tag
24
+ @release_tag ||= release_path.basename.to_s
25
+ end
26
+
27
+ def show_current
28
+ update_result get_summary(release_tag)
29
+ end
30
+
31
+ def show_summary
32
+ update_result get_summary(*get_releases)
33
+ end
34
+
35
+ def get_releases
36
+ capture(:ls, '-xt', releases_path).split
37
+ end
38
+
39
+ protected
40
+
41
+ def get_status(tag)
42
+ if current_symlinked?(tag)
43
+ current_release?(tag) ? " *" : "s*"
44
+ else
45
+ (current_release?(tag) and !current_release?(release_tag)) ? "c*" : " "
46
+ end
47
+ end
48
+
49
+ def get_summary(*release_tags)
50
+ release_tags.inject([]) do |r, tag|
51
+ r.push "#{get_status(tag)} #{application_name}:#{tag} (published)"
52
+ end.join("\n")
53
+ end
6
54
  end
7
55
  end
8
56
  end
@@ -21,6 +21,10 @@ module Luban
21
21
  def package_bin_path(package_name)
22
22
  @package_bin_path ||= package_path(package_name).join('bin')
23
23
  end
24
+
25
+ def service_entry
26
+ @service_entry ||= "#{env_name.gsub('/', '.')}.app"
27
+ end
24
28
  end
25
29
  end
26
30
  end
@@ -46,12 +46,12 @@ module Luban
46
46
  end
47
47
 
48
48
  task :version do
49
- desc "Show current version for required packages"
49
+ desc "Show current version for app/required packages"
50
50
  action! :show_current
51
51
  end
52
52
 
53
53
  task :versions do
54
- desc "Show package installation summary"
54
+ desc "Show app/package installation summary"
55
55
  action! :show_summary
56
56
  end
57
57
 
@@ -91,7 +91,7 @@ module Luban
91
91
 
92
92
  module Control
93
93
  Actions = %i(start_process stop_process kill_process
94
- restart_process check_process)
94
+ restart_process check_process show_process)
95
95
  Actions.each do |action|
96
96
  define_method(action) do |args:, opts:|
97
97
  raise NotImplementedError, "#{self.class.name}##{__method__} is an abstract method."
@@ -133,6 +133,11 @@ module Luban
133
133
  desc "Check process status"
134
134
  action! :check_process
135
135
  end
136
+
137
+ task :process do
138
+ desc "Show running process if any"
139
+ action! :show_process
140
+ end
136
141
  end
137
142
  end
138
143
  end
@@ -108,6 +108,10 @@ module Luban
108
108
  update_result check_process!
109
109
  end
110
110
 
111
+ def show_process
112
+ update_result show_process!
113
+ end
114
+
111
115
  def kill_process
112
116
  if process_stopped?
113
117
  update_result "Skipped! Already stopped #{service_full_name}", status: :skipped
@@ -188,13 +192,20 @@ module Luban
188
192
  end
189
193
 
190
194
  def process_grep(pattern = process_pattern)
191
- capture(:pgrep, "-l -f \"#{pattern}\" 2>/dev/null").split.inject({}) do |h, p|
195
+ capture(:pgrep, "-l -f \"#{pattern}\" 2>/dev/null").split("\n").inject({}) do |h, p|
192
196
  pid, pname = p.split(' ', 2)
193
197
  h[pid] = pname
194
198
  h
195
199
  end
196
200
  end
197
201
 
202
+ def show_process!
203
+ result = process_grep.inject("") do |s, (pid, cmd)|
204
+ s += "#{pid} : #{cmd}\n"
205
+ end
206
+ result.empty? ? "No processes are found up and running." : result
207
+ end
208
+
198
209
  def remove_orphaned_pid_file
199
210
  rm(pid_file_path) if pid_file_orphaned?
200
211
  end
@@ -237,6 +248,14 @@ module Luban
237
248
  def remove_orphaned_pid_file
238
249
  rm(pid_files_path) if pid_file_orphaned?
239
250
  end
251
+
252
+ def monitor_command
253
+ @monitor_command ||= "#{monitor_executable} monitor -g #{service_entry}"
254
+ end
255
+
256
+ def unmonitor_command
257
+ @unmonitor_command ||= "#{monitor_executable} unmonitor -g #{service_entry}"
258
+ end
240
259
  end
241
260
 
242
261
  include Base
@@ -139,7 +139,7 @@ module Luban
139
139
  def render_template(template_file, context: binding)
140
140
  require 'erb'
141
141
  template = File.read(template_file)
142
- ERB.new(template, nil, '<>').result(context)
142
+ ERB.new(template, nil, '-').result(context)
143
143
  end
144
144
 
145
145
  def revision_match?(file_to_upload, revision)
@@ -1,5 +1,5 @@
1
1
  module Luban
2
2
  module Deployment
3
- VERSION = "0.6.0"
3
+ VERSION = "0.6.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rubyist Lei
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-08 00:00:00.000000000 Z
11
+ date: 2016-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: luban-cli