silvermind_deployment 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c731ca700193f3096f99103d2aa4717025f7349
4
- data.tar.gz: 31a6a74325ef552396542738b6e6352bf9dcb039
3
+ metadata.gz: b142f72901ad27f2aa090d27088946998241ff2b
4
+ data.tar.gz: e0bfabf0d74b470be0e6450a2ed492041241f88f
5
5
  SHA512:
6
- metadata.gz: c68694e18a0798091f46de611f7f1fb807aa2f64cd7deb33ee9a4670dd697e153818151d96961ca58251dfec2248eaa923982566d15c8f114e71fff19e5ac134
7
- data.tar.gz: 7ab20959fa116ea89194ea8c1e64ae24a83d2dafdf96fd4de6830ee873014a6848dba72f9ad151cc27f589580015c0d7e4e81e94edf7f2e74b6ec5e681809d69
6
+ metadata.gz: 5ca28569d3a1f8bd9fe21785eda4cdfecf4e7912cd05466cfb359366830ce75b079be2d9081427a59852c4e8e067ff43cf7ca8ab0f34332b17c2259a7a183f61
7
+ data.tar.gz: 09dd0868118eb5e5ee02481fcd0519a8874cfcb515cf1f1460f699ebbef13ba5471c85e307332ae7f4a1c30e1f1767eb521c3f43cdcf92495d77862d25e2765b
@@ -7,6 +7,11 @@ module SilvermindDeployment
7
7
  source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
8
8
 
9
9
  def copy_unicorn
10
+ template 'deploy.rb', 'config/deploy.rb'
11
+ template 'deploy/production.rb', 'config/deploy/production.rb'
12
+
13
+ template 'eye/production.rb', 'config/eye/production.rb'
14
+
10
15
  template 'unicorn.rb', 'config/unicorn.rb'
11
16
  end
12
17
 
@@ -0,0 +1,109 @@
1
+ # config valid only for current version of Capistrano
2
+ lock '3.4.0'
3
+
4
+ set :application, 'TODO: your app name'
5
+ set :repo_url, 'TODO: your rails app git repo url'
6
+
7
+ # Default branch is :master
8
+ # ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
9
+
10
+ # Default deploy_to directory is /var/www/my_app_name
11
+ # set :deploy_to, "/home/app_path"
12
+
13
+ # Default value for :scm is :git
14
+ # set :scm, :git
15
+
16
+ # Default value for :format is :pretty
17
+ # set :format, :pretty
18
+
19
+ # Default value for :log_level is :debug
20
+ # set :log_level, :debug
21
+
22
+ # Default value for :pty is false
23
+ # set :pty, true
24
+
25
+ # Default value for :linked_files is []
26
+ set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
27
+
28
+ # Default value for linked_dirs is []
29
+ set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')
30
+
31
+ # Default value for default_env is {}
32
+ # set :default_env, { path: "/opt/ruby/bin:$PATH" }
33
+
34
+ # Default value for keep_releases is 5
35
+ # set :keep_releases, 5
36
+
37
+
38
+ ### EYE
39
+ set :eye_roles, -> { :app }
40
+ set :eye_env, -> { {rails_env: fetch(:rails_env)} }
41
+ set :eye_config_file, -> { "#{current_path}/config/eye/#{fetch :rails_env}.rb" }
42
+
43
+
44
+ ### Rollbar Deploy Pings
45
+ set :rollbar_token, 'TODO: your rollbar server side token for deployment notifications'
46
+ set :rollbar_env, Proc.new { fetch :stage }
47
+ set :rollbar_role, Proc.new { :app }
48
+
49
+
50
+ namespace :deploy do
51
+
52
+ after :restart, :clear_cache do
53
+ on roles(:web), in: :groups, limit: 3, wait: 10 do
54
+ # Here we can do anything such as:
55
+ # within release_path do
56
+ # execute :rake, 'cache:clear'
57
+ # end
58
+ end
59
+ end
60
+
61
+ end
62
+
63
+ namespace :eye do
64
+
65
+ task :start do
66
+ on roles(fetch(:eye_roles)), in: :groups, limit: 3, wait: 10 do
67
+ within current_path do
68
+ with fetch(:eye_env) do
69
+ execute :bundle, "exec eye start #{fetch(:eye_app_name)}"
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ task :stop do
76
+ on roles(fetch(:eye_roles)), in: :groups, limit: 3, wait: 10 do
77
+ within current_path do
78
+ with fetch(:eye_env) do
79
+ execute :bundle, "exec eye stop #{fetch(:eye_app_name)}"
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ task :restart do
86
+ on roles(fetch(:eye_roles)), in: :groups, limit: 3, wait: 10 do
87
+ within current_path do
88
+ with fetch(:eye_env) do
89
+ execute :bundle, "exec eye restart #{fetch(:eye_app_name)}"
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ desc "Start eye with the desired configuration file"
96
+ task :load_config do
97
+ on roles(fetch(:eye_roles)) do
98
+ within current_path do
99
+ with fetch(:eye_env) do
100
+ execute :bundle, "exec eye quit"
101
+ execute :bundle, "exec eye load #{fetch(:eye_config_file)}"
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ end
108
+ before "deploy:finished", "eye:load_config"
109
+ after "deploy:finished", "eye:restart"
@@ -0,0 +1,18 @@
1
+ # server-based syntax
2
+ # ======================
3
+ # Defines a single server with a list of roles and multiple properties.
4
+ # You can define all roles on a single server, or split them:
5
+
6
+ set :deploy_to, "/home/TODO: app_path"
7
+
8
+ server '#TODO YOUR-SERVER-URL', user: 'TODO: USER-NAME', roles: %w{app db web}
9
+
10
+ set :rails_env, "production"
11
+
12
+ set :eye_app_name, "TODO: YOUR-EYE-APP-NAME"
13
+
14
+ ### RUBY
15
+ set :rbenv_ruby, '2.2.2'
16
+ set :rbenv_type, :user
17
+ set :rbenv_map_bins, %w{rake gem bundle ruby rails unicorn}
18
+ set :rbenv_prefix, "RAILS_ENV=#{fetch(:rails_env)} RACK_ENV=#{fetch(:rails_env)} #{fetch(:rbenv_path)}/bin/rbenv exec"
@@ -0,0 +1,62 @@
1
+ app_name = "TODO: YOUR-EYE-APP-NAME"
2
+
3
+ Eye.config do
4
+ logger "/home/#{app_name}/shared/log/eye.log"
5
+
6
+ #mail :host => "mx.some.host", :port => 25, :domain => "some.host"
7
+ #contact :errors, :mail, 'error@some.host'
8
+ #contact :dev, :mail, 'dev@some.host'
9
+
10
+ end
11
+
12
+ Eye.application(app_name) do |app|
13
+
14
+ working_dir "/home/#{app_name}/current"
15
+
16
+ group "services" do
17
+
18
+ process :unicorn do
19
+ pid_file "/home/#{app_name}/shared/tmp/pids/unicorn.pid"
20
+ stdall "/home/#{app_name}/shared/log/eye-unicorn.log"
21
+ start_command "bundle exec unicorn -c /home/#{app_name}/current/config/unicorn.rb --daemonize"
22
+ restart_command "kill -USR2 {PID}" # for rolling restarts
23
+
24
+ stop_signals [:TERM, 10.seconds]
25
+
26
+ #start_timeout 100.seconds
27
+ #restart_grace 50.seconds
28
+ end
29
+
30
+ # process :mailer_worker do
31
+ # working_dir '/home/tailorart/current'
32
+ # pid_file "/home/tailorart/shared/pids/mailer_worker.pid"
33
+ # start_command "bundle exec sidekiq -c 2 -q mailer"
34
+ # daemonize true
35
+ # stdall "log/eye-mailer_worker.log"
36
+ # end
37
+
38
+ # process :default_worker do
39
+ # pid_file "/home/#{app_name}/shared/tmp/pids/default_worker.pid"
40
+ # start_command "bundle exec sidekiq -c 1"
41
+ # daemonize true
42
+ # stdall "log/eye-default_worker.log"
43
+ # end
44
+
45
+ # process :import_worker do
46
+ # pid_file "/home/#{app_name}/shared/tmp/pids/import_worker.pid"
47
+ # start_command "bundle exec sidekiq -c 1 -q importer"
48
+ # daemonize true
49
+ # stdall "log/eye-import_worker.log"
50
+ # end
51
+
52
+ # starts the clockwork which schedule (recurring jobs / cron replacement)
53
+ # process :clock do
54
+ # pid_file "/home/#{app_name}/shared/tmp/pids/clock.pid"
55
+ # start_command "bundle exec clockwork config/clock.rb"
56
+ # daemonize true
57
+ # stdall "log/eye-clock.log"
58
+ # end
59
+
60
+ end
61
+
62
+ end
@@ -1 +1,48 @@
1
- # DEMO TEMPLATE FILE
1
+ # Setup paths
2
+ if ENV['RACK_ENV'] == 'development'
3
+ puts "wrong for production!!!!!!!!"
4
+ #web_root = File.expand_path('tmp')
5
+ current_path = File.expand_path(File.join(File.dirname(__FILE__), '..'))
6
+ else
7
+ web_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
8
+ current_path = File.join(web_root, 'current')
9
+ end
10
+
11
+ shared_path = File.join(web_root, 'shared')
12
+ pid_file = File.join(shared_path, 'tmp/pids', 'unicorn.pid')
13
+
14
+ HttpRequest::DEFAULTS["rack.url_scheme"] = "http"
15
+ HttpRequest::DEFAULTS["HTTPS"] = "off"
16
+ HttpRequest::DEFAULTS["HTTP_X_FORWARDED_PROTO"] = "http"
17
+
18
+
19
+ # Configuration
20
+ worker_processes 2
21
+ timeout 30 # restarts workers that hang for 30 seconds
22
+ preload_app true # faster worker spawn time and needed for newrelic. http://newrelic.com/docs/troubleshooting/im-using-unicorn-and-i-dont-see-any-data
23
+ pid pid_file
24
+ listen File.join(shared_path, 'tmp/sockets', 'unicorn.sock'), :backlog => 1024 # default = 1024
25
+ working_directory current_path
26
+
27
+ stderr_path File.join(shared_path, 'log', 'unicorn.stderr.log')
28
+ stdout_path File.join(shared_path, 'log', 'unicorn.stdout.log')
29
+
30
+
31
+ before_exec do |server|
32
+ ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile"
33
+ end
34
+
35
+
36
+ # Zero downtime deployment
37
+ # Kill old process as the new finished spinning up
38
+ before_fork do |server, worker|
39
+ old_pid = "#{pid_file}.oldbin"
40
+ if File.exists?(old_pid) && server.pid != old_pid
41
+ begin
42
+ old_pid_content = File.read(old_pid).to_i
43
+ Process.kill("QUIT", old_pid_content)
44
+ rescue Errno::ENOENT, Errno::ESRCH
45
+ # someone else did our job for us
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  module SilvermindDeployment
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -42,6 +42,12 @@ Gem::Specification.new do |spec|
42
42
 
43
43
  spec.add_runtime_dependency "unicorn", ">= 5.0.0"
44
44
 
45
+ #####################################################
46
+ # Error Reporting
47
+ #####################################################
48
+
49
+ spec.add_runtime_dependency "rollbar"
50
+
45
51
  #####################################################
46
52
  # Capistrano Deployment
47
53
  #####################################################
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silvermind_deployment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Severin Ulrich
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 5.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rollbar
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: capistrano
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -155,6 +169,9 @@ files:
155
169
  - bin/setup
156
170
  - lib/generators/silvermind_deployment/install/USAGE
157
171
  - lib/generators/silvermind_deployment/install/install_generator.rb
172
+ - lib/generators/silvermind_deployment/install/templates/deploy.rb
173
+ - lib/generators/silvermind_deployment/install/templates/deploy/production.rb
174
+ - lib/generators/silvermind_deployment/install/templates/eye/production.rb
158
175
  - lib/generators/silvermind_deployment/install/templates/unicorn.rb
159
176
  - lib/silvermind_deployment.rb
160
177
  - lib/silvermind_deployment/version.rb