mina-multi_server 0.0.2 → 0.0.3

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: eb8fbd81839d9680eac4f9f3be3b8a09c6818294
4
- data.tar.gz: fe958e90560fa92d12e8aa21242d2181e11061d9
3
+ metadata.gz: 156403b3e7629f267233b946f5027a04aa339834
4
+ data.tar.gz: 8df9fbb7b178407c6d3e84afab6fa5925e70e8fd
5
5
  SHA512:
6
- metadata.gz: 4df35cbc527eadc085fe726aafc72939b2c17261de3ab32330b7693001ab9487092c75b3356ad57389f8a2bbf554a40c379884127b42b76ed278da0eae6f8384
7
- data.tar.gz: d58ec1fadd9edf5ee97aa447517c9361c98d70d978087d03977e22f69d257a4a32a4149a1ca34869609feb587999bd0703edf8b37dae7daaf2d759769f476f34
6
+ metadata.gz: d4d471714bf72b91e93818206351f1f6f3413aa451acd81a082fc99ab70955c1e48b1871421f8de08d2727c07f58628367e732e6f4cc1bc1a6d2571ba251c2b7
7
+ data.tar.gz: 17c45fbb5a290568cd1732b1197af4c2e8d250ad97379caf69f33a2de09e31d07c3e9850b866ff2dd32f37c7edd87b0431b6e731eb5b9127c01996e82e406a5d
data/README.md CHANGED
@@ -14,7 +14,7 @@ gem install mina-multi_server
14
14
  ## Usage
15
15
 
16
16
  Set a `servers` array in your deploy.rb with the hostnames of the servers where
17
- you want the tasks to be executed.
17
+ you want the tasks to be executed on.
18
18
 
19
19
  When using `mina-multi_server`, there is no need to set a `domain` var as Mina
20
20
  requires.
@@ -39,10 +39,46 @@ $ mina production deploy
39
39
 
40
40
  ## How it works
41
41
 
42
- Each remote task will be executed for each server, setting Mina's `domain` var
43
- to each value of the `servers` array.
42
+ Each remote task will be executed for each server of `servers` array, setting
43
+ `ENV['domain']` to each server. Mina [checks][checks] ENV[`domain`] when fetching the
44
+ `domain` to be used by the task. Using the `ENV` keeps the `domain` var of Mina
45
+ untouched, so you can still use it for other task (such as `ssh`). In addition,
46
+ `ENV['domain']` is also restored to its previous value in case it was set.
44
47
 
45
- For non-remote tasks, each task will be executed only once, `servers` var will
46
- not be used and no `domain` var will be set.
48
+ For non-remote tasks, each task will be executed only once and `servers` var
49
+ will not be used.
47
50
 
48
51
  Tasks will be executed one after the other, sequentially.
52
+
53
+ [checks]: https://github.com/mina-deploy/mina/blob/master/lib/mina/configuration.rb#L27
54
+
55
+ ## Running tasks on a single server
56
+
57
+ Mina-multi_server includes a `select` task that lets you pick the server where you
58
+ want the task to be executed on. You just need to call it before the main task.
59
+ You will also need to require `mina/multi_server/select` in your deploy.rb.
60
+
61
+ ```ruby
62
+ # deploy.rb
63
+
64
+ require 'mina/multi_server'
65
+ require 'mina/multi_server/select'
66
+
67
+ task :production do
68
+ set :servers, ['server-1.example.com', 'server-2.example.com']
69
+ end
70
+
71
+ # ...
72
+ ```
73
+
74
+ ```
75
+ $ mina production select ssh
76
+
77
+ Select server:
78
+ 1. server-1.example.com
79
+ 2. server-2.example.com
80
+ >
81
+ ```
82
+ After you select an option, the `domain` var that Mina uses will be set to the
83
+ selected server. In addition, the `servers` array will be reduced to a
84
+ single-item array including only the selected server.
@@ -5,8 +5,9 @@ Gem::Specification.new do |s|
5
5
  s.homepage = 'https://github.com/Juanmcuello/mina-multi_server'
6
6
  s.license = 'MIT'
7
7
  s.name = 'mina-multi_server'
8
+ s.require_paths = ['lib', 'tasks']
8
9
  s.summary = 'Mina multi-server support'
9
- s.version = '0.0.2'
10
+ s.version = '0.0.3'
10
11
 
11
12
  s.add_dependency 'mina', '~> 1.0'
12
13
  end
@@ -0,0 +1,20 @@
1
+ task :select do
2
+ ensure!(:servers)
3
+ puts 'Select server:'
4
+
5
+ fetch(:servers).each_with_index do |item, index|
6
+ puts "#{index + 1}. #{item}"
7
+ end
8
+ print '> '
9
+
10
+ begin
11
+ exit 1 unless (result = STDIN.gets.to_i) > 0
12
+ exit 1 unless (server = fetch(:servers)[result - 1])
13
+
14
+ set :domain, server
15
+ set :servers, [server]
16
+ rescue Interrupt
17
+ print "\n"
18
+ exit 1
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mina-multi_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Manuel Cuello
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-04 00:00:00.000000000 Z
11
+ date: 2017-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mina
@@ -34,6 +34,7 @@ files:
34
34
  - README.md
35
35
  - lib/mina/multi_server.rb
36
36
  - mina-multi_server.gemspec
37
+ - tasks/mina/multi_server/select.rb
37
38
  homepage: https://github.com/Juanmcuello/mina-multi_server
38
39
  licenses:
39
40
  - MIT
@@ -42,6 +43,7 @@ post_install_message:
42
43
  rdoc_options: []
43
44
  require_paths:
44
45
  - lib
46
+ - tasks
45
47
  required_ruby_version: !ruby/object:Gem::Requirement
46
48
  requirements:
47
49
  - - ">="
@@ -54,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
56
  version: '0'
55
57
  requirements: []
56
58
  rubyforge_project:
57
- rubygems_version: 2.5.1
59
+ rubygems_version: 2.6.11
58
60
  signing_key:
59
61
  specification_version: 4
60
62
  summary: Mina multi-server support