j-cap-recipes 0.0.15 → 0.0.16

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: 0b96c02150dff5033f67954c8625e207f08050d9
4
- data.tar.gz: a9cd1381347921f258d6987953a3155127b1b725
3
+ metadata.gz: 5196ab571ff7a96196e7a0e7e7a1a740e05e2663
4
+ data.tar.gz: 51f805237ce8285ebf7f1e4cd3be1d9b6affd735
5
5
  SHA512:
6
- metadata.gz: 1ffd8d989dcf6292e96a6a04d2d1bb02d7981a3421836af6e6c68bb3be648ca6d3eef9b03e6790a8cdd5daaa6313d6b6798adbc2fdf8d23f7ffa70ad39d026ef
7
- data.tar.gz: a1ddaafa9ec4178cb3cd63990eacbadf87aa8e8101f5bbaad55eef9627decfa21625715a904255f611c969faf8939bafefa3c6afdb1b02d3ae18dfdced5dd97c
6
+ metadata.gz: b8ac7e2590969083d4a2db7712e174f9a155659b25f354a81d814def2e96d78184b35e47b0f4601ba1224bf3477361b2ebae49d80407f5c48c1e180118d860af
7
+ data.tar.gz: f212f9d82f1006094fc70379a52bbefcbccf521da8224f8a914fa7b2ab339666b4664615638ae4ebd2d7b78deddd3553c9233318e5fe65ca403ec3d7941efba0
data/CHANGELOG.md CHANGED
@@ -1,9 +1,15 @@
1
1
  ## Changelog
2
2
 
3
+ ## 0.0.16
4
+
5
+ * Added handy task to remote edit settings file.
6
+ * Renamed handy to settings recipes
7
+ * Updated settings to run default editor instead of only `vi`
8
+
3
9
  ## 0.0.15
4
10
 
5
11
  * Added new SSHKit backend called SshCommand. It adds support to run interactive commands, example like `rails console`.
6
- * Added rails rake task to create datbase backup and restore. You can check `rake -T`
12
+ * Added rails rake task to create database backup and restore. You can check `rake -T`
7
13
  * Optimized to run rails console task via SshCommand backend
8
14
  * Added a new task `rails:less_log` to show the current log file via `less`
9
15
  * Update Handy with a new task `config:settings:get` to download remote stage config to local folder.
@@ -18,8 +24,8 @@
18
24
 
19
25
  * Updated recipe git to update remote with new tags.
20
26
  * Remove the old settings before upload a new one.
21
- * Added files recipes to dowload remote files. Use `current` folder to search settings.
22
- * Use capistrano method to get revison timestamp for git tagging.
27
+ * Added files recipes to download remote files. Use `current` folder to search settings.
28
+ * Use capistrano method to get revision timestamp for git tagging.
23
29
 
24
30
 
25
31
  ## 0.0.11
@@ -39,7 +45,7 @@
39
45
 
40
46
  ## 0.0.6
41
47
 
42
- * Added deploy notifiction of the Honeybadger service.
48
+ * Added deploy notification of the Honeybadger service.
43
49
 
44
50
  ## 0.0.5
45
51
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- j-cap-recipes (0.0.15)
4
+ j-cap-recipes (0.0.16)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -45,6 +45,16 @@ Also you need to include rake tasks in your `Rakefile`:
45
45
  ### Setup
46
46
  ### Check
47
47
  ### Monit
48
+
49
+ ### Database recipes
50
+
51
+ `cap production db:create`
52
+ `cap production db:backup`
53
+ `cap production db:dump_download`
54
+ `cap production db:dump_upload`
55
+ `cap production db:restore`
56
+
57
+
48
58
  ### Rails
49
59
 
50
60
  To run remote rails console you should update to the latest gems `capistrano-rbenv` and `capistrano-bundler`
@@ -86,16 +96,16 @@ test:
86
96
 
87
97
  `honeybadger:deploy` - notify the service about deploy and it would be invoked after `deploy:migrate`
88
98
 
89
- ### Handy
90
-
91
- Support to manage https://github.com/bigbinary/handy config files. First should add `require 'j-cap-recipes/handy'` to `Capfile`.
92
- There are three tasks available:
99
+ ### Settings
93
100
 
101
+ Support to manage https://github.com/bigbinary/handy config files. First should add `require 'j-cap-recipes/settings'` to `Capfile`.
102
+ There are tasks available:
94
103
 
95
104
  - `cap staging config:settings` Show the current staging config files;
96
105
  - `cap staging config:settings:delete` Remove the custom env settings file;
97
106
  - `cap staging config:settings:upload` Update the remote config file with local one;
98
- - `cap staging config:settings:get` Download the rmote config file to local one
107
+ - `cap staging config:settings:get` Download the remote config file to local one
108
+ - `cap staging config:settings:edit` Direct editing of the settings file
99
109
 
100
110
  ### Git
101
111
 
@@ -140,7 +150,7 @@ Added utility rake task to create database backup for postgresql and rails.
140
150
 
141
151
  ### SSHKit addon
142
152
 
143
- `SSHKit::Backend::SshCommand` a new backend to invoke the ssh command using sytem command `ssh`.
153
+ `SSHKit::Backend::SshCommand` a new backend to invoke the ssh command using system command `ssh`.
144
154
  Now you can easy to execute interactive applications with similar changes. Example:
145
155
 
146
156
  ```ruby
@@ -1 +1,4 @@
1
- load File.expand_path('../tasks/handy.rake', __FILE__)
1
+ require 'sshkit/backends/ssh_command'
2
+ require_relative 'sshkit_runner_patch'
3
+
4
+ load File.expand_path('../tasks/settings.rake', __FILE__)
@@ -1,45 +1,4 @@
1
1
  require 'sshkit/backends/ssh_command'
2
- require 'sshkit/runners/abstract'
3
-
4
- #Patch to support backend option
5
- # Sent PR https://github.com/capistrano/sshkit/pull/117, except constantinize
6
- module SSHKit
7
-
8
- module Runner
9
-
10
- class Abstract
11
-
12
- attr_reader :hosts, :options, :block
13
-
14
- def initialize(hosts, options = nil, &block)
15
- @hosts = Array(hosts)
16
- @options = options || {}
17
- @block = block
18
- end
19
-
20
- private
21
-
22
- def backend(host, &block)
23
- backend_factory.new(host, &block)
24
- end
25
-
26
- def backend_factory
27
- case @options[:backend]
28
- when Symbol
29
- SSHKit::Backend.const_get(@options[:backend].to_s.split('_').collect(&:capitalize).join)
30
- when String
31
- Kernel.const_get(@options[:backend])
32
- when nil
33
- SSHKit.config.backend
34
- else
35
- @options[:backend]
36
- end
37
-
38
- end
39
- end
40
-
41
- end
42
-
43
- end
2
+ require_relative 'sshkit_runner_patch'
44
3
 
45
4
  load File.expand_path('../tasks/rails.rake', __FILE__)
@@ -0,0 +1,4 @@
1
+ require 'sshkit/backends/ssh_command'
2
+ require_relative 'sshkit_runner_patch'
3
+
4
+ load File.expand_path('../tasks/settings.rake', __FILE__)
@@ -0,0 +1,42 @@
1
+ require 'sshkit/runners/abstract'
2
+
3
+ #Patch to support backend option
4
+ # Sent PR https://github.com/capistrano/sshkit/pull/117, except constantinize
5
+ module SSHKit
6
+
7
+ module Runner
8
+
9
+ class Abstract
10
+
11
+ attr_reader :hosts, :options, :block
12
+
13
+ def initialize(hosts, options = nil, &block)
14
+ @hosts = Array(hosts)
15
+ @options = options || {}
16
+ @block = block
17
+ end
18
+
19
+ private
20
+
21
+ def backend(host, &block)
22
+ backend_factory.new(host, &block)
23
+ end
24
+
25
+ def backend_factory
26
+ case @options[:backend]
27
+ when Symbol
28
+ SSHKit::Backend.const_get(@options[:backend].to_s.split('_').collect(&:capitalize).join)
29
+ when String
30
+ Kernel.const_get(@options[:backend])
31
+ when nil
32
+ SSHKit.config.backend
33
+ else
34
+ @options[:backend]
35
+ end
36
+
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -46,11 +46,23 @@ namespace :db do
46
46
  within release_path do
47
47
  FileUtils.mkdir_p 'db/backups'
48
48
  bakup_file = "db/backups/#{fetch(:application)}_#{fetch(:rails_env).to_s}_latest.dump"
49
- download! "#{shared_path}/#{bakup_file}", bakup_file
49
+ download! "#{release_path}/#{bakup_file}", bakup_file
50
50
  end
51
51
  end
52
52
  end
53
53
 
54
+ desc 'Downlaod to local machine the latest backup'
55
+ task :dump_upload do
56
+ on primary fetch(:migration_role) do
57
+ within release_path do
58
+ FileUtils.mkdir_p 'db/backups'
59
+ bakup_file = "db/backups/#{fetch(:application)}_#{fetch(:rails_env).to_s}_latest.dump"
60
+ upload! bakup_file, "#{release_path}/#{bakup_file}"
61
+ end
62
+ end
63
+ end
64
+
65
+
54
66
  end
55
67
 
56
68
  remote_file 'config/database.yml' => '/tmp/database.yml', roles: :app
@@ -51,7 +51,7 @@ ps xa \
51
51
  | grep #{database_name} \
52
52
  | grep -v grep \
53
53
  | awk '{print $1}' \
54
- | xargs kill
54
+ | xargs kill || true
55
55
  EOF
56
56
  sh command
57
57
  end
@@ -61,6 +61,7 @@ end
61
61
  def postgres_command_options(str, config)
62
62
  str += " -h #{config[:hostname]}" if config[:hostname].present?
63
63
  str += " -U #{config[:username]}" if config[:username].present?
64
+ str += ' -O -c'
64
65
  str
65
66
  end
66
67
 
@@ -2,28 +2,35 @@ namespace :monit do
2
2
  desc 'Restart monit'
3
3
  task :restart do
4
4
  on roles(:app), in: :sequence, wait: 5 do
5
- execute 'sudo', '/etc/init.d/monit restart'
5
+ execute :sudo, '/etc/init.d/monit restart'
6
6
  end
7
7
  end
8
8
 
9
9
  desc 'Stop monit'
10
10
  task :stop do
11
11
  on roles(:app), in: :sequence, wait: 5 do
12
- execute 'sudo', '/etc/init.d/monit stop'
12
+ execute :sudo, '/etc/init.d/monit stop'
13
13
  end
14
14
  end
15
15
 
16
16
  desc 'Start monit'
17
17
  task :start do
18
18
  on roles(:app), in: :sequence, wait: 5 do
19
- execute 'sudo', '/etc/init.d/monit start'
19
+ execute :sudo, '/etc/init.d/monit start'
20
20
  end
21
21
  end
22
22
 
23
23
  desc 'Exec monit command'
24
24
  task :exec, :command do |task, args|
25
25
  on roles(:app), in: :sequence, wait: 5 do
26
- execute 'sudo', 'monit', args[:command]
26
+ execute :sudo, :monit, args[:command]
27
+ end
28
+ end
29
+
30
+ desc 'Reload monit configs'
31
+ task :reload, :command do |task, args|
32
+ on roles(:app), in: :sequence, wait: 5 do
33
+ execute :sudo, :monit, :reload
27
34
  end
28
35
  end
29
36
  end
@@ -35,6 +35,13 @@ namespace :config do
35
35
  download! current_path.join('config', 'settings', "#{fetch(:stage)}.yml"), local_dir
36
36
  end
37
37
  end
38
+
39
+ desc 'Edit remote settings'
40
+ task :edit do
41
+ on roles(:app), backend: :ssh_command do |*args|
42
+ execute('\"\${EDITOR:-vi}\"', current_path.join('config', 'settings', "#{fetch(:stage)}.yml"))
43
+ end
44
+ end
38
45
  end
39
46
 
40
47
  end
@@ -1,5 +1,5 @@
1
1
  module JCap
2
2
  module Recipes
3
- VERSION = '0.0.15'
3
+ VERSION = '0.0.16'
4
4
  end
5
5
  end
@@ -16,7 +16,9 @@ module SSHKit
16
16
  end
17
17
 
18
18
  def execute(*args, &block)
19
- result = 'ssh %s@%s -t "%s"' % [host.username, String(host.hostname), command(*args).to_command]
19
+ host_url = String(host.hostname)
20
+ host_url = '%s@%s' % [host.username, host_url] if host.username
21
+ result = 'ssh %s -t "%s"' % [host_url, command(*args).to_command]
20
22
  output << Command.new(result)
21
23
  system(result)
22
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: j-cap-recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Nikitochkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-24 00:00:00.000000000 Z
11
+ date: 2014-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,7 +84,9 @@ files:
84
84
  - lib/j-cap-recipes/rails.rb
85
85
  - lib/j-cap-recipes/railtie.rb
86
86
  - lib/j-cap-recipes/rake.rb
87
+ - lib/j-cap-recipes/settings.rb
87
88
  - lib/j-cap-recipes/setup.rb
89
+ - lib/j-cap-recipes/sshkit_runner_patch.rb
88
90
  - lib/j-cap-recipes/tasks/airbrake.rake
89
91
  - lib/j-cap-recipes/tasks/check.rake
90
92
  - lib/j-cap-recipes/tasks/database.rake
@@ -93,7 +95,6 @@ files:
93
95
  - lib/j-cap-recipes/tasks/deploy.rake
94
96
  - lib/j-cap-recipes/tasks/files.rake
95
97
  - lib/j-cap-recipes/tasks/git.rake
96
- - lib/j-cap-recipes/tasks/handy.rake
97
98
  - lib/j-cap-recipes/tasks/honeybadger.rake
98
99
  - lib/j-cap-recipes/tasks/hpusher.rake
99
100
  - lib/j-cap-recipes/tasks/log.rake
@@ -101,6 +102,7 @@ files:
101
102
  - lib/j-cap-recipes/tasks/nginx.rake
102
103
  - lib/j-cap-recipes/tasks/rails.rake
103
104
  - lib/j-cap-recipes/tasks/rake.rake
105
+ - lib/j-cap-recipes/tasks/settings.rake
104
106
  - lib/j-cap-recipes/tasks/setup.rake
105
107
  - lib/j-cap-recipes/tasks/templates/database.yml.erb
106
108
  - lib/j-cap-recipes/tasks/unicorn.rake