taketo 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +32 -2
- data/Rakefile +8 -1
- data/VERSION +1 -1
- data/bin/taketo +1 -1
- data/features/config.feature +90 -0
- data/features/connect_to_server.feature +6 -53
- data/lib/taketo/commands/ssh_command.rb +5 -1
- data/lib/taketo/constructs/server.rb +1 -1
- data/lib/taketo/dsl.rb +26 -14
- data/lib/taketo/support/named_nodes_collection.rb +1 -1
- data/lib/taketo.rb +1 -1
- data/spec/integration/dsl_integration_spec.rb +15 -5
- data/spec/lib/taketo/commands/ssh_command_spec.rb +3 -1
- data/spec/lib/taketo/constructs/server_spec.rb +1 -0
- data/spec/lib/taketo/dsl_spec.rb +48 -10
- data/spec/lib/taketo/support/named_nodes_collection_spec.rb +2 -0
- metadata +3 -2
data/README.md
CHANGED
@@ -78,11 +78,37 @@ Destination resolving works intelligently. Given the following config:
|
|
78
78
|
|
79
79
|
```taketo my_project:staging``` will ssh to s1 with host = 1.2.3.4
|
80
80
|
```taketo my_project2``` will ssh to s2 with host = 2.3.4.5
|
81
|
-
```taketo
|
81
|
+
```taketo mps1``` will ssh to ps1 with host = 3.4.5.6 - note the use of global alias
|
82
82
|
|
83
83
|
Note that default destination can be specified via ```default_destination``` config option
|
84
84
|
|
85
|
-
|
85
|
+
You can use shared server configs to reduce duplication:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
shared_server_config :my_staging do
|
89
|
+
command :console do
|
90
|
+
execute "rails c"
|
91
|
+
desc "Launch rails console"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
project :my_project do
|
96
|
+
environment :staging do
|
97
|
+
server :s1 do
|
98
|
+
host "1.2.3.4"
|
99
|
+
include_shared_server_config(:my_staging)
|
100
|
+
end
|
101
|
+
|
102
|
+
server :s2 do
|
103
|
+
host :s2 do
|
104
|
+
include_shared_server_config(:my_staging)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
This will give you ```console``` commands available both on s1 and s2
|
111
|
+
|
86
112
|
To-Do:
|
87
113
|
------
|
88
114
|
|
@@ -92,6 +118,10 @@ To-Do:
|
|
92
118
|
The Changelog:
|
93
119
|
--------------
|
94
120
|
|
121
|
+
### v0.0.6 (26.07.2012) ###
|
122
|
+
* Add identity_file server config option
|
123
|
+
* Add shared server config support
|
124
|
+
|
95
125
|
### v0.0.5 (24.07.2012) ###
|
96
126
|
* Add --directory option, which enables specifying directory on remote server upon launch
|
97
127
|
* Add global_alias config option for servers
|
data/Rakefile
CHANGED
@@ -15,7 +15,14 @@ require 'rspec/core/rake_task'
|
|
15
15
|
require 'cucumber'
|
16
16
|
require 'cucumber/rake/task'
|
17
17
|
|
18
|
-
RSpec::Core::RakeTask.new
|
18
|
+
RSpec::Core::RakeTask.new do |t|
|
19
|
+
t.pattern = 'spec/lib/**/*_spec.rb'
|
20
|
+
end
|
21
|
+
|
22
|
+
RSpec::Core::RakeTask.new do |t|
|
23
|
+
t.pattern = 'spec/integration/**/*_spec.rb'
|
24
|
+
t.name = :integration_spec
|
25
|
+
end
|
19
26
|
|
20
27
|
Cucumber::Rake::Task.new(:features) do |t|
|
21
28
|
t.cucumber_opts = "features --tags ~@wip --format pretty -x"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/bin/taketo
CHANGED
@@ -0,0 +1,90 @@
|
|
1
|
+
Feature: taketo config
|
2
|
+
In order to get rid of routineous ssh command calls
|
3
|
+
As a user
|
4
|
+
I want to be able configure taketo
|
5
|
+
|
6
|
+
Scenario: Shared server configs
|
7
|
+
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
8
|
+
"""
|
9
|
+
shared_server_config :shared_config_example do
|
10
|
+
port 9999 #can contain any server config options
|
11
|
+
end
|
12
|
+
|
13
|
+
project :slots do
|
14
|
+
environment :staging do
|
15
|
+
server(:s1) { host "1.2.3.4"; include_shared_server_config(:shared_config_example) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
"""
|
19
|
+
And I successfully run `taketo slots:staging:s1 --config=/tmp/taketo_test_cfg.rb --dry-run`
|
20
|
+
Then the output should contain
|
21
|
+
"""
|
22
|
+
ssh -t -p 9999 1.2.3.4 "RAILS_ENV=staging bash"
|
23
|
+
"""
|
24
|
+
|
25
|
+
Scenario: Set environment variables
|
26
|
+
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
27
|
+
"""
|
28
|
+
project :slots do
|
29
|
+
environment :staging do
|
30
|
+
server do
|
31
|
+
host "1.2.3.4"
|
32
|
+
location "/var/apps/slots"
|
33
|
+
env :FOO => "the value"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
"""
|
38
|
+
And I successfully run `taketo --config=/tmp/taketo_test_cfg.rb --dry-run`
|
39
|
+
Then the output should contain
|
40
|
+
"""
|
41
|
+
RAILS_ENV=staging
|
42
|
+
"""
|
43
|
+
And the output should contain
|
44
|
+
"""
|
45
|
+
FOO=the\ value
|
46
|
+
"""
|
47
|
+
|
48
|
+
Scenario: Reopen config scopes
|
49
|
+
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
50
|
+
"""
|
51
|
+
project :slots do
|
52
|
+
environment :staging do
|
53
|
+
server do
|
54
|
+
host "1.2.3.4"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
project :slots do
|
60
|
+
environment :staging do
|
61
|
+
server do
|
62
|
+
env :FOO => "bar"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
"""
|
67
|
+
And I successfully run `taketo --config=/tmp/taketo_test_cfg.rb slots:staging --dry-run`
|
68
|
+
Then the output should match /ssh -t 1\.2\.3\.4 "(RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"/
|
69
|
+
|
70
|
+
Scenario: Unique server alias
|
71
|
+
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
72
|
+
"""
|
73
|
+
project :slots do
|
74
|
+
environment :staging do
|
75
|
+
server :s1 do
|
76
|
+
host "1.2.3.4"
|
77
|
+
end
|
78
|
+
server :s2 do
|
79
|
+
global_alias :ss2
|
80
|
+
host "2.3.4.5"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
"""
|
85
|
+
And I successfully run `taketo ss2 --config=/tmp/taketo_test_cfg.rb --dry-run`
|
86
|
+
Then the output should contain
|
87
|
+
"""
|
88
|
+
ssh -t 2.3.4.5 "RAILS_ENV=staging bash"
|
89
|
+
"""
|
90
|
+
|
@@ -46,51 +46,6 @@ Feature:
|
|
46
46
|
ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging bash"
|
47
47
|
"""
|
48
48
|
|
49
|
-
Scenario: Set environment variables
|
50
|
-
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
51
|
-
"""
|
52
|
-
project :slots do
|
53
|
-
environment :staging do
|
54
|
-
server do
|
55
|
-
host "1.2.3.4"
|
56
|
-
location "/var/apps/slots"
|
57
|
-
env :FOO => "the value"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
"""
|
62
|
-
And I successfully run `taketo --config=/tmp/taketo_test_cfg.rb --dry-run`
|
63
|
-
Then the output should contain
|
64
|
-
"""
|
65
|
-
RAILS_ENV=staging
|
66
|
-
"""
|
67
|
-
And the output should contain
|
68
|
-
"""
|
69
|
-
FOO=the\ value
|
70
|
-
"""
|
71
|
-
|
72
|
-
Scenario: Reopen config scopes
|
73
|
-
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
74
|
-
"""
|
75
|
-
project :slots do
|
76
|
-
environment :staging do
|
77
|
-
server do
|
78
|
-
host "1.2.3.4"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
project :slots do
|
84
|
-
environment :staging do
|
85
|
-
server do
|
86
|
-
env :FOO => "bar"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
"""
|
91
|
-
And I successfully run `taketo --config=/tmp/taketo_test_cfg.rb slots:staging --dry-run`
|
92
|
-
Then the output should match /ssh -t 1\.2\.3\.4 "(RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"/
|
93
|
-
|
94
49
|
Scenario: Default destination
|
95
50
|
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
96
51
|
"""
|
@@ -111,23 +66,21 @@ Feature:
|
|
111
66
|
ssh -t 2.3.4.5 "RAILS_ENV=staging bash"
|
112
67
|
"""
|
113
68
|
|
114
|
-
Scenario:
|
69
|
+
Scenario: SSH key file
|
115
70
|
When I have the following config in "/tmp/taketo_test_cfg.rb"
|
116
71
|
"""
|
117
72
|
project :slots do
|
118
73
|
environment :staging do
|
119
|
-
server
|
120
|
-
|
121
|
-
end
|
122
|
-
server :s2 do
|
123
|
-
global_alias :ss2
|
74
|
+
server do
|
75
|
+
identity_file "/home/gor/.ssh/foo bar"
|
124
76
|
host "2.3.4.5"
|
125
77
|
end
|
126
78
|
end
|
127
79
|
end
|
128
80
|
"""
|
129
|
-
And I successfully run `taketo
|
81
|
+
And I successfully run `taketo --config=/tmp/taketo_test_cfg.rb --dry-run`
|
130
82
|
Then the output should contain
|
131
83
|
"""
|
132
|
-
ssh -t 2.3.4.5 "RAILS_ENV=staging bash"
|
84
|
+
ssh -t -i /home/gor/.ssh/foo\ bar 2.3.4.5 "RAILS_ENV=staging bash"
|
133
85
|
"""
|
86
|
+
|
@@ -13,7 +13,7 @@ module Taketo
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def render(rendered_command)
|
16
|
-
%Q[ssh -t #{port} #{username}#{host} "#{rendered_command}"].squeeze(" ")
|
16
|
+
%Q[ssh -t #{port} #{identity_file} #{username}#{host} "#{rendered_command}"].squeeze(" ")
|
17
17
|
end
|
18
18
|
|
19
19
|
def host
|
@@ -30,6 +30,10 @@ module Taketo
|
|
30
30
|
def username
|
31
31
|
%Q[#{shellescape @server.username}@] if @server.username
|
32
32
|
end
|
33
|
+
|
34
|
+
def identity_file
|
35
|
+
%Q[-i #{shellescape @server.identity_file}] if @server.identity_file
|
36
|
+
end
|
33
37
|
end
|
34
38
|
end
|
35
39
|
end
|
@@ -7,7 +7,7 @@ module Taketo
|
|
7
7
|
module Constructs
|
8
8
|
class Server < BaseConstruct
|
9
9
|
attr_reader :environment_variables
|
10
|
-
attr_accessor :host, :port, :username, :default_location, :environment, :global_alias
|
10
|
+
attr_accessor :host, :port, :username, :default_location, :environment, :global_alias, :identity_file
|
11
11
|
|
12
12
|
has_nodes :commands, :command
|
13
13
|
|
data/lib/taketo/dsl.rb
CHANGED
@@ -2,7 +2,8 @@ require 'taketo/constructs_factory'
|
|
2
2
|
|
3
3
|
module Taketo
|
4
4
|
class DSL
|
5
|
-
class ScopeError < StandardError;
|
5
|
+
class ScopeError < StandardError; end
|
6
|
+
class ConfigError < StandardError; end
|
6
7
|
|
7
8
|
class << self
|
8
9
|
def define_scope(scope, parent_scope, options = {})
|
@@ -19,23 +20,25 @@ module Taketo
|
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
define_method name do |
|
23
|
+
def define_method_in_scope(name, parent_scope, &block)
|
24
|
+
define_method name do |*args, &blk|
|
24
25
|
unless current_scope?(parent_scope)
|
25
26
|
raise ScopeError,
|
26
27
|
"#{name} can't be defined in #{current_scope} scope"
|
27
28
|
end
|
28
|
-
|
29
|
+
args.push blk if blk
|
30
|
+
instance_exec(*args, &block)
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
33
|
-
attr_reader :current_scope_object, :config
|
35
|
+
attr_reader :current_scope_object, :config, :shared_server_configs
|
34
36
|
|
35
37
|
def initialize(factory = Taketo::ConstructsFactory.new)
|
36
38
|
@factory = factory
|
37
39
|
@scope = [:config]
|
38
40
|
@config = @current_scope_object = factory.create_config
|
41
|
+
@shared_server_configs = Hash.new { |h, k| raise ConfigError, "Shared server config '#{k}' is not defined!"}
|
39
42
|
end
|
40
43
|
|
41
44
|
def configure(filename = nil, &block)
|
@@ -56,15 +59,24 @@ module Taketo
|
|
56
59
|
define_scope :server, :environment, :default_name => :default
|
57
60
|
define_scope :command, :server
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
62
|
+
define_method_in_scope(:default_destination, :config) { |destination| current_scope_object.default_destination = destination }
|
63
|
+
define_method_in_scope(:host, :server) { |hostname| current_scope_object.host = hostname }
|
64
|
+
define_method_in_scope(:port, :server) { |port_number| current_scope_object.port = port_number }
|
65
|
+
define_method_in_scope(:user, :server) { |username| current_scope_object.username = username }
|
66
|
+
define_method_in_scope(:location, :server) { |path| current_scope_object.default_location = path }
|
67
|
+
define_method_in_scope(:global_alias,:server) { |alias_name| current_scope_object.global_alias = alias_name }
|
68
|
+
define_method_in_scope(:env, :server) { |env| current_scope_object.env(env) }
|
69
|
+
define_method_in_scope(:identity_file, :server) { |identity_file| current_scope_object.identity_file = identity_file }
|
70
|
+
define_method_in_scope(:execute, :command) { |command| current_scope_object.command = command }
|
71
|
+
define_method_in_scope(:desc, :command) { |description| current_scope_object.description = description }
|
72
|
+
|
73
|
+
define_method_in_scope(:shared_server_config, :config) do |name, blk|
|
74
|
+
@shared_server_configs.store(name.to_sym, blk)
|
75
|
+
end
|
76
|
+
|
77
|
+
define_method_in_scope(:include_shared_server_config, :server) do |name, *args|
|
78
|
+
instance_exec(*args, &shared_server_configs[name])
|
79
|
+
end
|
68
80
|
|
69
81
|
private
|
70
82
|
|
data/lib/taketo.rb
CHANGED
@@ -5,6 +5,13 @@ describe "Taketo DSL" do
|
|
5
5
|
it "should parse config and instantiate objects" do
|
6
6
|
factory = Taketo::ConstructsFactory.new
|
7
7
|
config = Taketo::DSL.new(factory).configure do
|
8
|
+
shared_server_config(:commands) do
|
9
|
+
command :console do
|
10
|
+
execute "rails c"
|
11
|
+
desc "Rails console"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
8
15
|
project :slots do
|
9
16
|
environment :staging do
|
10
17
|
server do
|
@@ -12,9 +19,7 @@ describe "Taketo DSL" do
|
|
12
19
|
user "deployer"
|
13
20
|
location "/var/app"
|
14
21
|
env :FOO => "bar"
|
15
|
-
|
16
|
-
execute "rails c"
|
17
|
-
end
|
22
|
+
include_shared_server_config :commands
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
@@ -26,6 +31,7 @@ describe "Taketo DSL" do
|
|
26
31
|
server server_name do
|
27
32
|
host host_name
|
28
33
|
location "/var/app"
|
34
|
+
include_shared_server_config :commands
|
29
35
|
end
|
30
36
|
end
|
31
37
|
end
|
@@ -46,11 +52,15 @@ describe "Taketo DSL" do
|
|
46
52
|
staging_server.username.should == "deployer"
|
47
53
|
staging_server.default_location.should == "/var/app"
|
48
54
|
staging_server.environment_variables.should == { :RAILS_ENV => "staging", :FOO => "bar" }
|
49
|
-
staging_server.commands.length.should == 1
|
50
|
-
staging_server.commands[:console].command.should == "rails c"
|
51
55
|
|
52
56
|
production = project.environments[:production]
|
53
57
|
production.servers.length.should == 2
|
58
|
+
production_server_1, production_server_2 = production.servers.first, production.servers.last
|
59
|
+
|
60
|
+
[staging_server, production_server_1, production_server_2].each do |s|
|
61
|
+
s.commands.length.should == 1
|
62
|
+
s.commands[:console].command.should == "rails c"
|
63
|
+
end
|
54
64
|
end
|
55
65
|
end
|
56
66
|
|
@@ -11,6 +11,7 @@ describe "SSH Command" do
|
|
11
11
|
:port => 22,
|
12
12
|
:username => "deployer",
|
13
13
|
:default_location => "/var/app",
|
14
|
+
:identity_file => "/home/gor/.ssh/qqq",
|
14
15
|
:environment => environment,
|
15
16
|
:environment_variables => {})
|
16
17
|
end
|
@@ -19,12 +20,13 @@ describe "SSH Command" do
|
|
19
20
|
let(:ssh_command) { SSHCommand.new(server) }
|
20
21
|
|
21
22
|
it "should compose command based on provided server object" do
|
22
|
-
ssh_command.render("foobar").should == %q[ssh -t -p 22 deployer@1.2.3.4 "foobar"]
|
23
|
+
ssh_command.render("foobar").should == %q[ssh -t -p 22 -i /home/gor/.ssh/qqq deployer@1.2.3.4 "foobar"]
|
23
24
|
end
|
24
25
|
|
25
26
|
it "should ignore absent parts" do
|
26
27
|
server.stub(:port => nil)
|
27
28
|
server.stub(:username => nil)
|
29
|
+
server.stub(:identity_file => nil)
|
28
30
|
ssh_command.render("foobar").should == %q[ssh -t 1.2.3.4 "foobar"]
|
29
31
|
end
|
30
32
|
|
@@ -16,6 +16,7 @@ describe "Server" do
|
|
16
16
|
it { should have_accessor(:username) }
|
17
17
|
it { should have_accessor(:default_location) }
|
18
18
|
it { should have_accessor(:global_alias) }
|
19
|
+
it { should have_accessor(:identity_file) }
|
19
20
|
|
20
21
|
describe "#environment=" do
|
21
22
|
let(:environment) { environment = stub(:Environment, :name => :the_environment) }
|
data/spec/lib/taketo/dsl_spec.rb
CHANGED
@@ -48,7 +48,7 @@ describe "DSL" do
|
|
48
48
|
end # end
|
49
49
|
end
|
50
50
|
|
51
|
-
shared_examples "
|
51
|
+
shared_examples "a scoped method" do |attribute_name, parent_scope_name, parent_scope_method, example_value|
|
52
52
|
parent_scope = scopes[parent_scope_name]
|
53
53
|
|
54
54
|
it { should be_appropriate_construct(attribute_name, example_value).under(parent_scope) }
|
@@ -66,7 +66,41 @@ describe "DSL" do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
describe "#default_destination" do
|
69
|
-
it_behaves_like "
|
69
|
+
it_behaves_like "a scoped method", :default_destination, :config, :default_destination=, "foo:bar:baz"
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "Shared server config" do
|
73
|
+
specify "#shared_server_config should store a block" do
|
74
|
+
dsl(scopes[:config], factory.create(:config)) do |c|
|
75
|
+
cfg = proc { any_method_call_here }
|
76
|
+
c.shared_server_config(:foo, &cfg)
|
77
|
+
c.shared_server_configs[:foo].should == cfg
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#include_shared_server_config" do
|
82
|
+
it "should execute the block on dsl object in server scope" do
|
83
|
+
dsl(scopes[:server], factory.create(:server)) do |c|
|
84
|
+
c.stub(:shared_server_configs => { :foo => proc { any_method_call_here } })
|
85
|
+
c.should_receive(:any_method_call_here)
|
86
|
+
c.include_shared_server_config(:foo)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should accept arguments" do
|
91
|
+
dsl(scopes[:server], factory.create(:server)) do |c|
|
92
|
+
c.stub(:shared_server_configs => { :foo => proc { |qux| any_method_call_here(qux) } })
|
93
|
+
c.should_receive(:any_method_call_here).with(321)
|
94
|
+
c.include_shared_server_config(:foo, 321)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should raise ConfigError if non-existent config included" do
|
99
|
+
dsl(scopes[:server], factory.create(:server)) do |c|
|
100
|
+
expect { c.include_shared_server_config(:foo) }.to raise_error(Taketo::DSL::ConfigError, "Shared server config 'foo' is not defined!")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
70
104
|
end
|
71
105
|
|
72
106
|
describe "#project" do
|
@@ -88,38 +122,42 @@ describe "DSL" do
|
|
88
122
|
end
|
89
123
|
|
90
124
|
describe "#host" do
|
91
|
-
it_behaves_like "
|
125
|
+
it_behaves_like "a scoped method", :host, :server, :host=, "127.0.0.2"
|
92
126
|
end
|
93
127
|
|
94
128
|
describe "#port" do
|
95
|
-
it_behaves_like "
|
129
|
+
it_behaves_like "a scoped method", :port, :server, :port=, 4096
|
96
130
|
end
|
97
131
|
|
98
132
|
describe "#user" do
|
99
|
-
it_behaves_like "
|
133
|
+
it_behaves_like "a scoped method", :user, :server, :username=, "deployer"
|
100
134
|
end
|
101
135
|
|
102
136
|
describe "#location" do
|
103
|
-
it_behaves_like "
|
137
|
+
it_behaves_like "a scoped method", :location, :server, :default_location=, "/var/app/"
|
104
138
|
end
|
105
139
|
|
106
140
|
describe "#env" do
|
107
|
-
it_behaves_like "
|
141
|
+
it_behaves_like "a scoped method", :env, :server, :env, { :FOO => "bar" }
|
108
142
|
end
|
109
143
|
|
110
144
|
describe "#global_alias" do
|
111
|
-
it_behaves_like "
|
145
|
+
it_behaves_like "a scoped method", :global_alias, :server, :global_alias=, "foobared"
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "#identity_file" do
|
149
|
+
it_behaves_like "a scoped method", :identity_file, :server, :identity_file=, "/home/gor/.ssh/qqq"
|
112
150
|
end
|
113
151
|
|
114
152
|
describe "#command" do
|
115
153
|
it_behaves_like "a scope", :command, :server
|
116
154
|
|
117
155
|
describe "#execute" do
|
118
|
-
it_behaves_like "
|
156
|
+
it_behaves_like "a scoped method", :execute, :command, :command=, "rails c"
|
119
157
|
end
|
120
158
|
|
121
159
|
describe "#desc" do
|
122
|
-
it_behaves_like "
|
160
|
+
it_behaves_like "a scoped method", :desc, :command, :description=, "Run rails console"
|
123
161
|
end
|
124
162
|
end
|
125
163
|
end
|
@@ -18,6 +18,8 @@ describe "NamedNodesCollection" do
|
|
18
18
|
collection.map(&:name).should == [:foo, :bar]
|
19
19
|
collection.length.should == 2
|
20
20
|
collection.size.should == 2
|
21
|
+
collection.first.should == node1
|
22
|
+
collection.last.should == node2
|
21
23
|
end
|
22
24
|
|
23
25
|
it "should raise error if element not found" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taketo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- spec/support/matchers/enclose_scope_matcher.rb
|
125
125
|
- spec/support/matchers/have_accessor_matcher.rb
|
126
126
|
- features/commands.feature
|
127
|
+
- features/config.feature
|
127
128
|
- features/config_validation.feature
|
128
129
|
- features/connect_to_server.feature
|
129
130
|
- features/error_handling.feature
|