negroku 2.0.0.pre7 → 2.0.0

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: 359805e3a2df5b2269f1fc5d75c7bbe8d84d8b02
4
- data.tar.gz: bfcbaa8204a7e548042179f999a028ca09a344f7
3
+ metadata.gz: 24cc285eb9ad2b4813daa33d542768b9d5b847d0
4
+ data.tar.gz: 7d75f4b9772ef0e518da35a78123fa87ff1a07ff
5
5
  SHA512:
6
- metadata.gz: 6662dc3bba237e60b002d04bf7bcfb339958bf02ce3d2bf0801a9c6bac4fa0001e48904240346cd24d1fe4712bb98455bc782168af8e1900fb1a26c8e8a752a9
7
- data.tar.gz: 8c41224e40842eedaf08e1b00f5bbd22cd4f60bb2abfdffaaebc68f28749982c6f3612317596686223386f3d41ef7cac4a9b2f767f69540e38d0aad06556ffcd
6
+ metadata.gz: fe22dc6821c831de3b2ca26cd7cf45720ecb6eadaff61f9f89f37303dfdfeb3b7ad63c52be882e601022274f1b1f631d1327742ce4c2314dc81ff5c3ba201da0
7
+ data.tar.gz: 0699cbe9a573d0e0ca403e579e6686ebb8bb50450319e3d595f173618cc340c202a1297d8466c52aee04ff776acdcb4294da0beeb37a7a2241f18e768f3a515b
data/lib/negroku/cli.rb CHANGED
@@ -3,7 +3,7 @@ require 'capistrano/setup'
3
3
  require 'capistrano/deploy'
4
4
 
5
5
  # Load applications deploy config if it exists
6
- require './config/deploy' if File.exists? "./config/deploy"
6
+ require './config/deploy' if File.exists? "./config/deploy.rb"
7
7
 
8
8
  require 'gli'
9
9
  require 'inquirer'
@@ -16,6 +16,8 @@ namespace :load do
16
16
 
17
17
  set :linked_files, fetch(:linked_files, []) + %w{}
18
18
  end
19
+
20
+ after "deploy", "deploy:cleanup"
19
21
  end
20
22
 
21
23
  # Load Negroku tasks
@@ -1,9 +1,9 @@
1
- def watch_process(name, template = "tasks/eye/_#{name}.erb")
1
+ def watch_process(name, options = {})
2
2
  processes = fetch(:eye_watched_processes, {})
3
3
 
4
- processes[name] = {
5
- template: template
6
- }
4
+ options[:template] ||= "tasks/eye/_#{name}.erb"
5
+
6
+ processes[name] = options
7
7
 
8
8
  set :eye_watched_processes, processes
9
9
  end
@@ -7,6 +7,8 @@ namespace :load do
7
7
  set :delayed_job_workers, 1
8
8
  set :delayed_job_queues, nil
9
9
  set :delayed_job_pool, nil
10
+
11
+ set :delayed_job_prefix, -> { "#{fetch(:application)}" }
10
12
  end
11
13
  end
12
14
 
@@ -1,21 +1,49 @@
1
1
  #########
2
2
  ## Adds support to monitor delayed_job processes through eye
3
3
  #########
4
+ def delayed_job_args
5
+ args = []
6
+ args << "--queues=#{fetch(:delayed_job_queues).join(',')}" unless fetch(:delayed_job_queues).nil?
7
+ args << "--prefix=#{fetch(:delayed_job_prefix)}" unless fetch(:delayed_job_prefix).nil?
8
+ args << fetch(:delayed_job_pools, {}).map {|k,v| "--pool=#{k}:#{v}"}.join(' ') unless fetch(:delayed_job_pools).nil?
9
+ args.join(' ')
10
+ end
11
+
12
+ def delayed_job_bin
13
+ "#{fetch(:delayed_job_bin_path)}/delayed_job"
14
+ end
15
+
16
+ def delayed_job_start_command
17
+ "#{fetch(:rbenv_prefix)} bundle exec #{delayed_job_bin} #{delayed_job_args} -i \#{i} start"
18
+ end
19
+
20
+ def delayed_job_stop_command
21
+ "#{fetch(:rbenv_prefix)} bundle exec #{delayed_job_bin} -i \#{i} stop"
22
+ end
4
23
 
5
24
  # Watch the delayed_job processes using the build in template
6
- watch_process(:delayed_job);
25
+ namespace :eye do
26
+ task :watch_process do
27
+
28
+ watch_process(:delayed_job, {
29
+ start_command: delayed_job_start_command,
30
+ stop_command: delayed_job_stop_command
31
+ })
32
+
33
+ end
34
+ end
7
35
 
8
36
  # Override start, restart and stop delayed_job tasks to so they call
9
37
  # the eye equivalents
10
- # namespace :unicorn do
11
- # ['start','restart','stop'].each do |cmd|
12
- # if Rake::Task.task_defined?("unicorn:#{cmd}")
13
- # Rake::Task["unicorn:#{cmd}"].clear_actions
14
- # # Reload or restart unicorn after the application is published
15
- # desc "#{cmd} unicorn through eye"
16
- # task cmd do
17
- # invoke "eye:#{cmd}", 'unicorn'
18
- # end
19
- # end
20
- # end
21
- # end
38
+ namespace :delayed_job do
39
+ ['start','restart','stop'].each do |cmd|
40
+ if Rake::Task.task_defined?("delayed_job:#{cmd}")
41
+ Rake::Task["delayed_job:#{cmd}"].clear_actions
42
+ # Reload or restart delayed_job after the application is published
43
+ desc "using eye"
44
+ task cmd do
45
+ invoke "eye:#{cmd}", 'delayed-job'
46
+ end
47
+ end
48
+ end
49
+ end
@@ -3,7 +3,13 @@
3
3
  #########
4
4
 
5
5
  # Watch the unicorn processes using the build in template
6
- watch_process(:unicorn);
6
+ namespace :eye do
7
+ task :watch_process do
8
+
9
+ watch_process(:unicorn);
10
+
11
+ end
12
+ end
7
13
 
8
14
  # Override start, restart and stop unicorn tasks to so they call
9
15
  # the eye equivalents
@@ -12,6 +12,10 @@ namespace :load do
12
12
  # Local path to look for custom config template
13
13
  set :eye_application_template, -> { "config/deploy/#{fetch(:stage)}/eye.rb.erb" }
14
14
 
15
+ # Application level notifications
16
+ set :eye_notification_contact, -> { :monitor }
17
+ set :eye_notification_level, -> { :error }
18
+
15
19
  # Add eye to :rbenv_map_bins
16
20
  fetch(:rbenv_map_bins) << 'eye'
17
21
  end
@@ -23,28 +27,20 @@ namespace :eye do
23
27
  desc "Loads eye config and starts monitoring"
24
28
  task :load do
25
29
  on release_roles fetch(:eye_roles) do
26
- within "#{current_path}" do
30
+ within current_path do
27
31
  execute :eye, :load, "#{shared_path}/config/eye.rb"
28
32
  end
29
33
  end
30
34
  end
31
35
 
32
36
  [:start,:restart, :info, :stop].each do |cmd|
33
- # Single process
34
- desc "Calls eye's #{cmd.to_s} on a process"
35
- task "#{cmd}:process", [:name] do |t, args|
36
- on release_roles fetch(:eye_roles) do
37
- within "#{current_path}" do
38
- execute :eye, cmd, "#{args[:name]}"
39
- end
40
- end
41
- end
42
- #
43
37
  desc "Calls eye's #{cmd.to_s} on the whole app"
44
- task cmd do |t, args|
38
+ task cmd, [:mask] do |t, args|
45
39
  on release_roles fetch(:eye_roles) do
46
- within "#{current_path}" do
47
- execute :eye, cmd, "#{fetch(:application)}"
40
+ within current_path do
41
+ mask = fetch(:application)
42
+ mask += ":#{args[:mask]}" if args[:mask]
43
+ execute :eye, cmd, mask
48
44
  end
49
45
  end
50
46
  end
@@ -58,7 +54,7 @@ namespace :negroku do
58
54
  namespace :eye do
59
55
 
60
56
  desc "Upload eye configuration file"
61
- task :setup do
57
+ task :setup => 'eye:watch_process' do
62
58
  on release_roles fetch(:eye_roles) do
63
59
  within "#{shared_path}/config" do
64
60
  processes = fetch(:eye_watched_processes, {})
@@ -78,7 +74,7 @@ namespace :negroku do
78
74
  end
79
75
  end
80
76
 
81
- after "deploy:published", "negroku:eye:setup"
77
+ before "deploy:published", "negroku:eye:setup"
82
78
  after "negroku:eye:setup", "eye:load"
83
79
 
84
80
  define_logs(:eye, {
@@ -78,7 +78,7 @@ namespace :negroku do
78
78
  end
79
79
 
80
80
  # Reload or restart unicorn after the application is published
81
- after 'deploy:publishing', 'restart' do
81
+ after 'deploy:published', 'restart' do
82
82
  invoke 'negroku:unicorn:setup'
83
83
  invoke 'unicorn:restart'
84
84
  end
@@ -11,3 +11,8 @@ set :branch, '<%= data[:branch] %>' # Optional, defaults to master
11
11
 
12
12
  # Rails configuration
13
13
  # set :rails_env, 'production'
14
+
15
+ # Eye monitoring notifications
16
+ # set :eye_notification_contact, :dev_team # Optional, defaults to :monitor
17
+ # set :eye_notification_level, :info # Optional, defaults to :error
18
+
@@ -1,28 +1,21 @@
1
- cwd = File.expand_path(File.join(File.dirname(__FILE__), %w[ ../ ../ ]))
1
+ group 'delayed-jobs' do
2
+ chain grace: 10.seconds
2
3
 
3
- config_path = File.join(cwd, %w{ config dj.yml } )
4
+ start_timeout 20.seconds
5
+ stop_timeout 20.seconds
6
+ restart_timeout 20.seconds
4
7
 
5
- workers_count = if File.exists?(config_path)
6
- YAML.load_file(config_path).try(:[], :workers) || 5
7
- else
8
- 5
9
- end
8
+ workers_count = '<%= fetch(:delayed_job_workers || 1) %>'.to_i
10
9
 
11
- Eye.application 'delayed_job' do
12
- working_dir cwd
13
- stop_on_delete true
10
+ (0 ... workers_count.to_i).each do |i|
14
11
 
15
- group 'dj' do
16
- chain grace: 5.seconds
12
+ process "worker-#{i}" do
13
+ pid_file "tmp/pids/delayed_job.#{i}.pid"
14
+ start_command "<%= options[:start_command] %>"
15
+ stop_command "<%= options[:stop_command] %>"
16
+ end
17
17
 
18
- (1 .. workers_count).each do |i|
19
- process "dj-#{i}" do
20
- pid_file "tmp/pids/delayed_job.#{i}.pid"
21
- start_command "rake jobs:work"
22
- daemonize true
23
- stop_signals [:INT, 30.seconds, :TERM, 10.seconds, :KILL]
24
- stdall "log/dj-#{i}.log"
25
- end
26
18
  end
19
+
27
20
  end
28
- end
21
+
@@ -1,9 +1,6 @@
1
- RAILS_ENV="<%= fetch(:rails_env) %>"
2
-
3
1
  process 'unicorn' do
4
- env rbenv_root: "<%= fetch(:rbenv_path) %>", rbenv_version: "<%=fetch(:rbenv_ruby) %>"
5
2
  pid_file "<%= fetch(:unicorn_pid) %>"
6
- start_command "<%= fetch(:rbenv_prefix) %> bundle exec unicorn -Dc <%= fetch(:unicorn_config_path) %> -E #{RAILS_ENV}"
3
+ start_command "<%= fetch(:rbenv_prefix) %> bundle exec unicorn -Dc <%= fetch(:unicorn_config_path) %> -E <%= fetch(:rails_env) %>"
7
4
  stdall "<%= fetch(:unicorn_log) %>"
8
5
 
9
6
  # stop signals:
@@ -1,19 +1,18 @@
1
- require 'eye-http'
2
-
3
- # Setups Eye global conf if not already
4
- Eye.config do
5
- logger '/var/log/eye-global.log'
6
- http :enable => true, :host => "0.0.0.0", :port => 12345
7
- end
8
-
9
1
  # Adding application
10
2
  Eye.application '<%= fetch(:application)%>' do
3
+ notify :<%= fetch(:eye_notification_contact) %>, :<%= fetch(:eye_notification_level) %>
4
+ notify :chat_room, :<%= fetch(:eye_notification_level) %>
5
+
6
+ load_env '<%= shared_path %>/.rbenv-vars'
7
+
8
+ env RBENV_ROOT: "<%= fetch(:rbenv_path) %>"
9
+ env RBENV_VERSION: "<%=fetch(:rbenv_ruby) %>"
10
+ env RAILS_ENV: "<%= fetch(:rails_env) %>"
11
11
 
12
12
  # All options inherits down to the config leafs.
13
13
  # except `env`, which merging down
14
-
15
- stdall '<%= shared_path %>/log/eye.log'
16
14
  working_dir '<%= current_path %>'
15
+ stdall '<%= shared_path %>/log/eye.log'
17
16
 
18
17
  trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
19
18
 
@@ -1,3 +1,3 @@
1
1
  module Negroku
2
- VERSION = '2.0.0.pre7'
2
+ VERSION = '2.0.0'
3
3
  end
data/negroku.gemspec CHANGED
@@ -21,17 +21,17 @@ spec = Gem::Specification.new do |s|
21
21
 
22
22
  s.add_runtime_dependency('rake', '~> 10.1')
23
23
  s.add_runtime_dependency('capistrano','~> 3.3.5')
24
- s.add_runtime_dependency('capistrano-rbenv', '~> 2.0.2')
24
+ s.add_runtime_dependency('capistrano-rbenv', '~> 2.0.3')
25
25
  s.add_runtime_dependency('capistrano-rails', '~> 1.1.2')
26
- s.add_runtime_dependency('capistrano-bundler', '~> 1.1.3')
26
+ s.add_runtime_dependency('capistrano-bundler', '~> 1.1.4')
27
27
  s.add_runtime_dependency('capistrano-npm', '~> 1.0.1')
28
28
  s.add_runtime_dependency('capistrano-nc', '~> 0.1.4')
29
29
 
30
30
  s.add_runtime_dependency('capistrano-nodenv', '~> 1.0.0')
31
- s.add_runtime_dependency('capistrano-bower', '~> 1.0.0')
31
+ s.add_runtime_dependency('capistrano-bower', '~> 1.1.0')
32
32
  s.add_runtime_dependency('capistrano3-nginx', '~> 2.0.4')
33
33
  s.add_runtime_dependency('capistrano3-unicorn', '~> 0.2.1')
34
- s.add_runtime_dependency('capistrano3-delayed-job', '~> 1.2.1')
34
+ s.add_runtime_dependency('capistrano3-delayed-job', '~> 1.3.0')
35
35
  s.add_runtime_dependency('whenever', '~> 0.9.4')
36
36
 
37
37
  s.add_runtime_dependency('gli','~> 2.12.2')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: negroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre7
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Ignacio Donoso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-27 00:00:00.000000000 Z
11
+ date: 2015-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: 2.0.2
89
+ version: 2.0.3
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: 2.0.2
96
+ version: 2.0.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: capistrano-rails
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 1.1.3
117
+ version: 1.1.4
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: 1.1.3
124
+ version: 1.1.4
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: capistrano-npm
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: 1.0.0
173
+ version: 1.1.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ~>
179
179
  - !ruby/object:Gem::Version
180
- version: 1.0.0
180
+ version: 1.1.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: capistrano3-nginx
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - ~>
214
214
  - !ruby/object:Gem::Version
215
- version: 1.2.1
215
+ version: 1.3.0
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - ~>
221
221
  - !ruby/object:Gem::Version
222
- version: 1.2.1
222
+ version: 1.3.0
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: whenever
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -357,9 +357,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
357
357
  version: '0'
358
358
  required_rubygems_version: !ruby/object:Gem::Requirement
359
359
  requirements:
360
- - - '>'
360
+ - - '>='
361
361
  - !ruby/object:Gem::Version
362
- version: 1.3.1
362
+ version: '0'
363
363
  requirements: []
364
364
  rubyforge_project:
365
365
  rubygems_version: 2.0.14