webbynode 1.0.5.beta5 → 1.0.5.beta6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of webbynode might be problematic. Click here for more details.
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -9
- data/Rakefile +19 -1
- data/lib/webbynode/commands/change_dns.rb +4 -1
- data/lib/webbynode/commands/database.rb +34 -7
- data/lib/webbynode/commands/init.rb +10 -8
- data/lib/webbynode/io.rb +2 -0
- data/lib/webbynode/push_and.rb +4 -0
- data/lib/webbynode/remote_executor.rb +12 -0
- data/lib/webbynode/ssh.rb +3 -2
- data/lib/webbynode/taps.rb +31 -4
- data/lib/webbynode.rb +9 -1
- data/spec/webbynode/commands/change_dns_spec.rb +15 -3
- data/spec/webbynode/commands/console_spec.rb +2 -0
- data/spec/webbynode/commands/database_spec.rb +82 -4
- data/spec/webbynode/commands/init_spec.rb +31 -5
- data/spec/webbynode/commands/logs_spec.rb +3 -1
- data/spec/webbynode/commands/push_spec.rb +15 -1
- data/spec/webbynode/commands/tasks_spec.rb +2 -0
- data/spec/webbynode/commands/webbies_spec.rb +2 -1
- data/spec/webbynode/io_spec.rb +12 -1
- data/spec/webbynode/push_and_spec.rb +8 -0
- data/spec/webbynode/remote_executor_spec.rb +29 -0
- data/spec/webbynode/taps_spec.rb +32 -0
- data/webbynode.gemspec +10 -26
- metadata +82 -155
@@ -6,6 +6,7 @@ describe Webbynode::Commands::Init do
|
|
6
6
|
let(:io_handler) { double("io").as_null_object }
|
7
7
|
let(:gemfile) { double("gemfile").as_null_object.tap { |g| g.stub!(:present?).and_return(false) } }
|
8
8
|
let(:api) { double("api").as_null_object }
|
9
|
+
let(:pushand) { stub.as_null_object }
|
9
10
|
|
10
11
|
def create_init(ip="4.3.2.1", host=nil, extra=[])
|
11
12
|
host = "--dns=#{host}" if host
|
@@ -13,6 +14,7 @@ describe Webbynode::Commands::Init do
|
|
13
14
|
@command.stub!(:gemfile).and_return(gemfile)
|
14
15
|
@command.should_receive(:git).any_number_of_times.and_return(git_handler)
|
15
16
|
@command.should_receive(:io).any_number_of_times.and_return(io_handler)
|
17
|
+
@command.stub!(:pushand).and_return(pushand)
|
16
18
|
io_handler.stub!(:file_exists?).with(".pushand").and_return(false)
|
17
19
|
end
|
18
20
|
|
@@ -41,9 +43,18 @@ describe Webbynode::Commands::Init do
|
|
41
43
|
cmd.stub!(:git).and_return(git_handler)
|
42
44
|
cmd.stub!(:io).and_return(io_handler)
|
43
45
|
cmd.stub!(:api).and_return(api)
|
46
|
+
cmd.stub!(:pushand).and_return(pushand)
|
44
47
|
end
|
45
48
|
end
|
46
49
|
|
50
|
+
describe '#create_pushand' do
|
51
|
+
it "creates .pushand when missing" do
|
52
|
+
subject.should_receive(:pushand_exists?).and_return(false)
|
53
|
+
pushand.should_receive(:create!)
|
54
|
+
subject.create_pushand
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
47
58
|
describe 'in trial mode' do
|
48
59
|
subject do
|
49
60
|
Webbynode::Commands::Init.new('--trial').tap do |cmd|
|
@@ -64,6 +75,7 @@ describe Webbynode::Commands::Init do
|
|
64
75
|
git_handler.should_receive(:add_remote).with('user', 'webbynode', 'trial.webbyapp.com', 'trial_app', :home => '/home/user')
|
65
76
|
|
66
77
|
subject.should_receive(:get_ip).never
|
78
|
+
subject.should_receive(:create_pushand)
|
67
79
|
subject.run
|
68
80
|
end
|
69
81
|
|
@@ -75,6 +87,7 @@ describe Webbynode::Commands::Init do
|
|
75
87
|
git_handler.should_receive(:add_remote).with('user', 'webbynode', 'trial.webbyapp.com', 'trial_app', :home => '/home/user')
|
76
88
|
|
77
89
|
subject.should_receive(:get_ip).never
|
90
|
+
subject.should_receive(:create_pushand)
|
78
91
|
subject.run
|
79
92
|
end
|
80
93
|
end
|
@@ -119,6 +132,7 @@ describe Webbynode::Commands::Init do
|
|
119
132
|
subject.stub!(:git).and_return(git_handler)
|
120
133
|
subject.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
121
134
|
|
135
|
+
subject.should_receive(:create_pushand)
|
122
136
|
subject.run
|
123
137
|
end
|
124
138
|
|
@@ -246,6 +260,7 @@ describe Webbynode::Commands::Init do
|
|
246
260
|
io_handler.should_receive(:file_exists?).with("script/rails").never
|
247
261
|
io_handler.should_receive(:add_setting).with("engine", "php")
|
248
262
|
|
263
|
+
subject.should_receive(:create_pushand)
|
249
264
|
subject.run
|
250
265
|
end
|
251
266
|
end
|
@@ -351,13 +366,15 @@ describe Webbynode::Commands::Init do
|
|
351
366
|
cmd.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
352
367
|
cmd.stub!(:git).and_return(git_handler)
|
353
368
|
cmd.stub!(:io).and_return(io_handler)
|
369
|
+
cmd.stub(:create_pushand)
|
354
370
|
end
|
355
371
|
end
|
356
372
|
|
357
373
|
it "doesn't ask if user already agreed to reinitialize" do
|
358
374
|
subject.stub!(:pushand_exists?).and_return(true)
|
359
375
|
io_handler.should_receive(:app_name).any_number_of_times.and_return("mah_app")
|
360
|
-
|
376
|
+
|
377
|
+
subject.should_receive(:create_pushand)
|
361
378
|
|
362
379
|
subject.should_receive(:ask).with("Do you want to initialize it again (y/n)?").once.ordered.and_return("y")
|
363
380
|
|
@@ -395,6 +412,7 @@ describe Webbynode::Commands::Init do
|
|
395
412
|
command.stub!(:gemfile).and_return(gemfile)
|
396
413
|
command.should_receive(:git).any_number_of_times.and_return(git_handler)
|
397
414
|
command.should_receive(:io).any_number_of_times.and_return(io_handler)
|
415
|
+
command.stub(:create_pushand)
|
398
416
|
|
399
417
|
io_handler.should_receive(:add_setting).with("engine", "php")
|
400
418
|
command.run
|
@@ -409,6 +427,9 @@ describe Webbynode::Commands::Init do
|
|
409
427
|
@command.stub!(:gemfile).and_return(gemfile)
|
410
428
|
@command.stub!(:git).and_return(git_handler)
|
411
429
|
@command.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
430
|
+
@command.stub(:create_pushand)
|
431
|
+
@command.stub(:create_webbynode_tree)
|
432
|
+
|
412
433
|
io.stub!(:file_exists?).with(".pushand").and_return(false)
|
413
434
|
end
|
414
435
|
|
@@ -594,7 +615,8 @@ describe Webbynode::Commands::Init do
|
|
594
615
|
it "should assume host is app's name when not given" do
|
595
616
|
@command.should_receive(:pushand_exists?).any_number_of_times.and_return(false)
|
596
617
|
io_handler.should_receive(:app_name).any_number_of_times.and_return("application_name")
|
597
|
-
|
618
|
+
|
619
|
+
pushand.should_receive(:create!).with("application_name", "application_name")
|
598
620
|
|
599
621
|
@command.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
600
622
|
@command.run
|
@@ -605,7 +627,8 @@ describe Webbynode::Commands::Init do
|
|
605
627
|
|
606
628
|
io_handler.should_receive(:file_exists?).with(".pushand").and_return(false)
|
607
629
|
io_handler.should_receive(:app_name).any_number_of_times.and_return("application_name")
|
608
|
-
|
630
|
+
|
631
|
+
pushand.should_receive(:create!).with("application_name", "my.com.br")
|
609
632
|
|
610
633
|
@command.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
611
634
|
@command.run
|
@@ -627,6 +650,7 @@ describe Webbynode::Commands::Init do
|
|
627
650
|
before(:each) do
|
628
651
|
git.stub(:remote_exists?).and_return(false)
|
629
652
|
subject.should_receive(:pushand_exists?).any_number_of_times.and_return(false)
|
653
|
+
subject.stub(:create_pushand)
|
630
654
|
end
|
631
655
|
|
632
656
|
it "creates the .webbynode system folder and stub files" do
|
@@ -649,7 +673,7 @@ describe Webbynode::Commands::Init do
|
|
649
673
|
it "should be created and made an executable" do
|
650
674
|
io_handler.should_receive(:file_exists?).with(".pushand").and_return(false)
|
651
675
|
io_handler.should_receive(:app_name).any_number_of_times.and_return("mah_app")
|
652
|
-
|
676
|
+
pushand.should_receive(:create!).with("mah_app", "mah_app")
|
653
677
|
|
654
678
|
@command.run
|
655
679
|
end
|
@@ -672,7 +696,7 @@ describe Webbynode::Commands::Init do
|
|
672
696
|
it "is replaced if user answers yes" do
|
673
697
|
@command.stub(:pushand_exists?).and_return(true)
|
674
698
|
io_handler.should_receive(:app_name).any_number_of_times.and_return("mah_app")
|
675
|
-
|
699
|
+
pushand.should_receive(:create!).with("mah_app", "mah_app")
|
676
700
|
|
677
701
|
io_handler.should_receive(:log).with("Commiting Webbynode changes...")
|
678
702
|
git_handler.should_receive(:add).with(".")
|
@@ -687,6 +711,7 @@ describe Webbynode::Commands::Init do
|
|
687
711
|
context "when git repo doesn't exist yet" do
|
688
712
|
before(:each) do
|
689
713
|
@command.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
714
|
+
@command.stub!(:create_pushand)
|
690
715
|
end
|
691
716
|
|
692
717
|
it "should create a new git repo" do
|
@@ -729,6 +754,7 @@ describe Webbynode::Commands::Init do
|
|
729
754
|
context "when git repo is initialized" do
|
730
755
|
before(:each) do
|
731
756
|
@command.stub!(:detect_engine).and_return(Webbynode::Engines::Rails)
|
757
|
+
@command.stub!(:create_pushand)
|
732
758
|
end
|
733
759
|
|
734
760
|
it "complains if git is in a dirty state" do
|
@@ -6,13 +6,15 @@ describe Webbynode::Commands::Logs do
|
|
6
6
|
let(:re) { double("RemoteExecutor").as_null_object }
|
7
7
|
let(:git) { double("Git").as_null_object }
|
8
8
|
let(:server) { double("Server").as_null_object }
|
9
|
-
|
9
|
+
let(:pushand) { stub.as_null_object }
|
10
|
+
|
10
11
|
subject do
|
11
12
|
Webbynode::Commands::Logs.new.tap do |cmd|
|
12
13
|
cmd.stub!(:io).and_return(io)
|
13
14
|
cmd.stub!(:remote_executor).and_return(re)
|
14
15
|
cmd.stub!(:server).and_return(server)
|
15
16
|
cmd.stub!(:git).and_return(git)
|
17
|
+
cmd.stub!(:pushand).and_return(pushand)
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
@@ -25,6 +25,7 @@ describe Webbynode::Commands::Push do
|
|
25
25
|
cmd.stub!(:pushand).and_return(pushand)
|
26
26
|
cmd.stub!(:git).and_return(git)
|
27
27
|
cmd.after_tasks.stub!(:read_tasks)
|
28
|
+
cmd.stub!(:ensure_tasks_folder)
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
@@ -42,6 +43,8 @@ describe Webbynode::Commands::Push do
|
|
42
43
|
if [ $? -eq 1 ]; then exit 1; fi
|
43
44
|
EOS
|
44
45
|
|
46
|
+
subject.before_tasks.should_receive(:ensure_tasks_folder)
|
47
|
+
subject.before_tasks.should_receive(:read_tasks)
|
45
48
|
subject.execute
|
46
49
|
end
|
47
50
|
end
|
@@ -51,11 +54,13 @@ describe Webbynode::Commands::Push do
|
|
51
54
|
pushand.should_receive(:parse_remote_app_name).and_return("test.webbynode.com")
|
52
55
|
io.should_receive(:log).with("Pushing test.webbynode.com", :start)
|
53
56
|
push.stub!(:exec)
|
57
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
54
58
|
push.execute
|
55
59
|
end
|
56
60
|
|
57
61
|
it "should push the application to the webby" do
|
58
62
|
io.should_receive(:exec).with("git push webbynode +HEAD:master", false)
|
63
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
59
64
|
push.execute
|
60
65
|
end
|
61
66
|
|
@@ -73,6 +78,7 @@ describe Webbynode::Commands::Push do
|
|
73
78
|
pushcmd.should_receive(:git).any_number_of_times.and_return(git)
|
74
79
|
pushcmd.before_tasks.stub!(:read_tasks)
|
75
80
|
pushcmd.after_tasks.stub!(:read_tasks)
|
81
|
+
pushcmd.before_tasks.should_receive(:ensure_tasks_folder)
|
76
82
|
|
77
83
|
pushand.should_receive(:parse_remote_app_name).and_return("app")
|
78
84
|
io.should_receive(:log).with("Finished pushing app", :finish)
|
@@ -83,6 +89,7 @@ describe Webbynode::Commands::Push do
|
|
83
89
|
|
84
90
|
it "should create a semaphore if --recreate-vhost is passed" do
|
85
91
|
pushcmd = Webbynode::Commands::Push.new("--recreate-vhost")
|
92
|
+
pushcmd.before_tasks.should_receive(:ensure_tasks_folder)
|
86
93
|
pushcmd.should_receive(:io).any_number_of_times.and_return(io)
|
87
94
|
pushcmd.should_receive(:remote_executor).any_number_of_times.and_return(re)
|
88
95
|
pushcmd.should_receive(:pushand).any_number_of_times.and_return(pushand)
|
@@ -102,12 +109,14 @@ describe Webbynode::Commands::Push do
|
|
102
109
|
context "when succesful" do
|
103
110
|
it "should notify the user" do
|
104
111
|
pushand.should_receive(:parse_remote_app_name).and_return("test.webbynode.com")
|
112
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
105
113
|
io.should_receive(:log).with("Finished pushing test.webbynode.com", :finish)
|
106
114
|
push.execute
|
107
115
|
end
|
108
116
|
end
|
109
117
|
|
110
118
|
describe "Tasks" do
|
119
|
+
before(:each) { push.before_tasks.should_receive(:ensure_tasks_folder) }
|
111
120
|
it "should have 2 before_tasks present" do
|
112
121
|
push.execute
|
113
122
|
2.times { push.before_tasks.session_tasks << "foo" }
|
@@ -135,7 +144,7 @@ describe Webbynode::Commands::Push do
|
|
135
144
|
end
|
136
145
|
|
137
146
|
it "should ensure that there are at least blank files available to read from" do
|
138
|
-
push.before_tasks.should_receive(:ensure_tasks_folder)
|
147
|
+
# push.before_tasks.should_receive(:ensure_tasks_folder)
|
139
148
|
push.execute
|
140
149
|
end
|
141
150
|
|
@@ -156,6 +165,7 @@ describe Webbynode::Commands::Push do
|
|
156
165
|
context "when there are one or more tasks available" do
|
157
166
|
before(:each) do
|
158
167
|
push.before_tasks.stub!(:has_tasks?).and_return(true)
|
168
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
159
169
|
end
|
160
170
|
|
161
171
|
it "should perform these tasks in order" do
|
@@ -169,6 +179,7 @@ describe Webbynode::Commands::Push do
|
|
169
179
|
context "when there are one or more tasks available" do
|
170
180
|
before(:each) do
|
171
181
|
push.after_tasks.stub!(:has_tasks?).and_return(true)
|
182
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
172
183
|
end
|
173
184
|
|
174
185
|
it "should perform these tasks in order" do
|
@@ -181,6 +192,7 @@ describe Webbynode::Commands::Push do
|
|
181
192
|
describe "#perform_before_tasks" do
|
182
193
|
before(:each) do
|
183
194
|
push.before_tasks.stub!(:has_tasks?).and_return(true)
|
195
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
184
196
|
io.stub!(:exec).with("git push webbynode +HEAD:master", false)
|
185
197
|
end
|
186
198
|
|
@@ -200,7 +212,9 @@ describe Webbynode::Commands::Push do
|
|
200
212
|
describe "#perform_after_tasks" do
|
201
213
|
before(:each) do
|
202
214
|
push.after_tasks.stub!(:has_tasks?).and_return(true)
|
215
|
+
push.stub!(:io).and_return(io)
|
203
216
|
io.stub!(:exec).with("git push webbynode +HEAD:master", false)
|
217
|
+
push.before_tasks.should_receive(:ensure_tasks_folder)
|
204
218
|
end
|
205
219
|
|
206
220
|
it "should provide feedback to the user that it's going to perform the tasks" do
|
@@ -159,6 +159,8 @@ describe Webbynode::Commands::Tasks do
|
|
159
159
|
task = Webbynode::Commands::Tasks.new('remove', 'after_push', 'rake', 'db:migrate', 'RAILS_ENV=production')
|
160
160
|
task.should_receive(:send).with('remove')
|
161
161
|
task.stub!(:read_tasks)
|
162
|
+
io = stub.as_null_object
|
163
|
+
task.stub(:io).and_return(io)
|
162
164
|
task.execute
|
163
165
|
end
|
164
166
|
end
|
@@ -11,7 +11,8 @@ describe Webbynode::Commands::Webbies do
|
|
11
11
|
:email => "fcoury@me.com", :response => read_fixture("api/webbies"))
|
12
12
|
|
13
13
|
api = Webbynode::ApiClient.new
|
14
|
-
api.stub(
|
14
|
+
api.stub(:properties)
|
15
|
+
api.stub(:credentials)
|
15
16
|
|
16
17
|
cmd = Webbynode::Commands::Webbies.new
|
17
18
|
cmd.should_receive(:api).and_return(api)
|
data/spec/webbynode/io_spec.rb
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'spec_helper')
|
3
3
|
|
4
4
|
describe Webbynode::Io do
|
5
|
+
before do
|
6
|
+
$testing_io = true
|
7
|
+
end
|
8
|
+
|
9
|
+
after do
|
10
|
+
$testing_io = false
|
11
|
+
end
|
12
|
+
|
5
13
|
describe '#list_files' do
|
6
14
|
it 'list files that match' do
|
7
15
|
Dir.should_receive(:glob).with("/tmp/*.abcdef").and_return(["abcdef"])
|
@@ -80,6 +88,7 @@ describe Webbynode::Io do
|
|
80
88
|
props.should_receive(:save)
|
81
89
|
|
82
90
|
io.should_receive(:properties).with(".webbynode/settings").and_return(props)
|
91
|
+
io.stub(:mkdir)
|
83
92
|
io.add_setting("engine", "php")
|
84
93
|
end
|
85
94
|
end
|
@@ -92,6 +101,7 @@ describe Webbynode::Io do
|
|
92
101
|
props.should_receive(:save)
|
93
102
|
|
94
103
|
io.should_receive(:properties).with(".webbynode/settings").and_return(props)
|
104
|
+
io.stub(:mkdir)
|
95
105
|
io.add_multi_setting("addons", ['a', 'b', 'c'])
|
96
106
|
end
|
97
107
|
end
|
@@ -117,6 +127,7 @@ describe Webbynode::Io do
|
|
117
127
|
props.should_receive(:save)
|
118
128
|
|
119
129
|
io.should_receive(:properties).with(".webbynode/settings").and_return(props)
|
130
|
+
io.stub(:mkdir)
|
120
131
|
io.remove_setting("engine")
|
121
132
|
end
|
122
133
|
end
|
@@ -305,7 +316,7 @@ describe Webbynode::Io do
|
|
305
316
|
it "executes the command and retrieve the output and exit code" do
|
306
317
|
io = Webbynode::Io.new
|
307
318
|
io.should_receive(:`).with("ls -la").and_return("output for ls -la")
|
308
|
-
io.exec3("ls -la").should ==
|
319
|
+
io.exec3("ls -la")[1].should == "output for ls -la"
|
309
320
|
end
|
310
321
|
end
|
311
322
|
end
|
@@ -25,4 +25,12 @@ describe Webbynode::PushAnd do
|
|
25
25
|
@pushand.parse_remote_app_name.should == "app_name"
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
describe "#create!" do
|
30
|
+
it "creates .pushand" do
|
31
|
+
@io.should_receive(:create_file).with(".pushand",
|
32
|
+
"#! /bin/bash\nphd $0 app_name dns_entry\n", true)
|
33
|
+
@pushand.create!("app_name", "dns_entry")
|
34
|
+
end
|
35
|
+
end
|
28
36
|
end
|
@@ -9,6 +9,35 @@ describe Webbynode::RemoteExecutor do
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
describe '#version' do
|
13
|
+
it { subject.version('0.2.23').should == '-v=0.2.23 ' }
|
14
|
+
it { subject.version(nil).should == '' }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#gem_installed?' do
|
18
|
+
it "returns true when gem is installed" do
|
19
|
+
subject.should_receive(:exec).with("gem list -i -v=0.2.23 taps").and_return('true')
|
20
|
+
subject.gem_installed?('taps', '0.2.23').should be_true
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns false when gem isn't installed" do
|
24
|
+
subject.should_receive(:exec).with("gem list -i mysql").and_return('false')
|
25
|
+
subject.gem_installed?('mysql').should be_false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#install_gem' do
|
30
|
+
it "returns true when gem is successfully installed" do
|
31
|
+
subject.should_receive(:exec).with("sudo gem install taps > /dev/null 2>1; echo $?").and_return('0')
|
32
|
+
subject.install_gem('taps').should be_true
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns false when gem can't be installed" do
|
36
|
+
subject.should_receive(:exec).with("sudo gem install mysql > /dev/null 2>1; echo $?").and_return('2')
|
37
|
+
subject.install_gem('mysql').should be_false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
12
41
|
describe '#retrieve_db_password' do
|
13
42
|
it "retrieves the remote db password" do
|
14
43
|
subject.should_receive(:exec).with(%q(echo `cat /var/webbynode/templates/rails/database.yml | grep password: | tail -1 | cut -d ":" -f 2`)).and_return("password\n")
|
data/spec/webbynode/taps_spec.rb
CHANGED
@@ -17,6 +17,22 @@ describe Webbynode::Taps do
|
|
17
17
|
it "installs taps gem remotely, if missing"
|
18
18
|
it "detects taps already running"
|
19
19
|
|
20
|
+
describe '#ensure_gems!' do
|
21
|
+
it "checks for installed taps" do
|
22
|
+
re.should_receive(:gem_installed?).with('taps', '0.3.23').and_return(false)
|
23
|
+
re.should_receive(:install_gem).with('taps', '0.3.23')
|
24
|
+
|
25
|
+
subject.ensure_gems!
|
26
|
+
end
|
27
|
+
|
28
|
+
it "checks for installed mysql" do
|
29
|
+
re.should_receive(:gem_installed?).with('mysql').and_return(false)
|
30
|
+
re.should_receive(:install_gem).with('mysql')
|
31
|
+
|
32
|
+
subject.ensure_gems!
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
20
36
|
describe '#start' do
|
21
37
|
it "starts a tap server" do
|
22
38
|
io.should_receive(:random_password).and_return("some_username")
|
@@ -56,6 +72,22 @@ describe Webbynode::Taps do
|
|
56
72
|
:remote_ip => "1.1.2.2"
|
57
73
|
end
|
58
74
|
|
75
|
+
it "encodes the local and remote password" do
|
76
|
+
subject.stub(:password).and_return("P@ssw=rd")
|
77
|
+
|
78
|
+
taps_cli = double('taps')
|
79
|
+
::Taps::Cli.stub(:new).and_return(taps_cli)
|
80
|
+
|
81
|
+
taps_cli.should_receive(:clientxfer).with(:pull,
|
82
|
+
:database_url => "mysql://local_user:P%40ssw0rd@localhost/local_db",
|
83
|
+
:remote_url => "http://user:P%40ssw%3Drd@1.1.2.2:5000")
|
84
|
+
|
85
|
+
subject.pull :user => "local_user",
|
86
|
+
:password => "P@ssw0rd",
|
87
|
+
:database => "local_db",
|
88
|
+
:remote_ip => "1.1.2.2"
|
89
|
+
end
|
90
|
+
|
59
91
|
it "raises an error if pull fails" do
|
60
92
|
pending "find a better way to detect errors"
|
61
93
|
io.should_receive(:execute).and_return(1)
|
data/webbynode.gemspec
CHANGED
@@ -1,40 +1,24 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
5
|
-
s.version = "1.0.5.
|
4
|
+
s.name = "webbynode"
|
5
|
+
s.version = "1.0.5.beta6"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Felipe Coury"]
|
9
|
-
s.date =
|
10
|
-
s.description =
|
11
|
-
s.email =
|
9
|
+
s.date = "2011-10-11"
|
10
|
+
s.description = "Webbynode Deployment Gem"
|
11
|
+
s.email = "felipe@webbynode.com"
|
12
12
|
s.executables = ["webbynode", "wn"]
|
13
13
|
s.extra_rdoc_files = ["README.rdoc", "bin/webbynode", "bin/wn", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/action_command.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/accounts.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/authorize_root.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/database.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/dns_aliases.rb", "lib/webbynode/commands/guides.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/ssh.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/html.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/taps.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb"]
|
14
14
|
s.files = ["Gemfile", "Gemfile.lock", "Guardfile", "Manifest", "PostInstall.txt", "README.rdoc", "Rakefile", "assets/webbynode.png", "autotest/discover.rb", "bin/webbynode", "bin/wn", "changelog.rdoc", "cucumber.yml.old", "inactive_features/bootstrap.feature", "inactive_features/step_definitions/command_steps.rb", "inactive_features/support/env.rb", "inactive_features/support/hooks.rb", "inactive_features/support/io_features.rb", "inactive_features/support/mocha.rb", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/action_command.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/accounts.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/authorize_root.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/database.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/dns_aliases.rb", "lib/webbynode/commands/guides.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/ssh.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/html.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/taps.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb", "spec/fixtures/aliases", "spec/fixtures/api/credentials", "spec/fixtures/api/dns", "spec/fixtures/api/dns_a_record", "spec/fixtures/api/dns_a_record_already_exists", "spec/fixtures/api/dns_a_record_error", "spec/fixtures/api/dns_new_zone", "spec/fixtures/api/webbies", "spec/fixtures/api/webbies_unauthorized", "spec/fixtures/api/webby", "spec/fixtures/commands/tasks/after_push", "spec/fixtures/fixture_helpers", "spec/fixtures/git/config/210.11.13.12", "spec/fixtures/git/config/67.23.79.31", "spec/fixtures/git/config/67.23.79.32", "spec/fixtures/git/config/config", "spec/fixtures/git/config/config_5", "spec/fixtures/git/config/new_210.11.13.12", "spec/fixtures/git/config/new_67.23.79.31", "spec/fixtures/git/config/new_67.23.79.32", "spec/fixtures/git/config/new_config", "spec/fixtures/git/status/clean", "spec/fixtures/git/status/dirty", "spec/fixtures/nodejs/server.js", "spec/fixtures/pushand", "spec/fixtures/trial/user_add", "spec/spec_helper.rb", "spec/webbynode/api_client_spec.rb", "spec/webbynode/application_spec.rb", "spec/webbynode/command_spec.rb", "spec/webbynode/commands/accounts_spec.rb", "spec/webbynode/commands/add_backup_spec.rb", "spec/webbynode/commands/add_key_spec.rb", "spec/webbynode/commands/addons_spec.rb", "spec/webbynode/commands/alias_spec.rb", "spec/webbynode/commands/apps_spec.rb", "spec/webbynode/commands/authorize_root_spec.rb", "spec/webbynode/commands/change_dns_spec.rb", "spec/webbynode/commands/config_spec.rb", "spec/webbynode/commands/console_spec.rb", "spec/webbynode/commands/database_spec.rb", "spec/webbynode/commands/delete_spec.rb", "spec/webbynode/commands/dns_aliases_spec.rb", "spec/webbynode/commands/guides_spec.rb", "spec/webbynode/commands/help_spec.rb", "spec/webbynode/commands/init_spec.rb", "spec/webbynode/commands/logs_spec.rb", "spec/webbynode/commands/open_spec.rb", "spec/webbynode/commands/push_spec.rb", "spec/webbynode/commands/remote_spec.rb", "spec/webbynode/commands/settings_spec.rb", "spec/webbynode/commands/ssh_spec.rb", "spec/webbynode/commands/tasks_spec.rb", "spec/webbynode/commands/user_spec.rb", "spec/webbynode/commands/version_spec.rb", "spec/webbynode/commands/webbies_spec.rb", "spec/webbynode/engines/django_spec.rb", "spec/webbynode/engines/engine_spec.rb", "spec/webbynode/engines/html_spec.rb", "spec/webbynode/engines/nodejs_spec.rb", "spec/webbynode/engines/php_spec.rb", "spec/webbynode/engines/rack_spec.rb", "spec/webbynode/engines/rails3_spec.rb", "spec/webbynode/engines/rails_spec.rb", "spec/webbynode/engines/wsgi_spec.rb", "spec/webbynode/gemfile_spec.rb", "spec/webbynode/git_spec.rb", "spec/webbynode/io_spec.rb", "spec/webbynode/option_spec.rb", "spec/webbynode/parameter_spec.rb", "spec/webbynode/properties_spec.rb", "spec/webbynode/push_and_spec.rb", "spec/webbynode/remote_executor_spec.rb", "spec/webbynode/server_spec.rb", "spec/webbynode/ssh_spec.rb", "spec/webbynode/taps_spec.rb", "spec/webbynode/trial_spec.rb", "webbynode.gemspec"]
|
15
|
-
s.homepage =
|
16
|
-
s.post_install_message =
|
17
|
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
18
|
-
Webbynode Rapid Deployment Gem
|
19
|
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
20
|
-
|
21
|
-
Thank you for installing Webbynode gem. You're now
|
22
|
-
able to deploy and manage your applications from
|
23
|
-
the comfort of your command line.
|
24
|
-
|
25
|
-
Please read our guide for a quickstart:
|
26
|
-
http://guides.webbynode.com/articles/rapidapps/
|
27
|
-
|
28
|
-
For more information use the commands:
|
29
|
-
wn help
|
30
|
-
wn guides
|
31
|
-
|
32
|
-
}
|
15
|
+
s.homepage = "http://webbynode.com"
|
16
|
+
s.post_install_message = "\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n Webbynode Rapid Deployment Gem\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\nThank you for installing Webbynode gem. You're now\nable to deploy and manage your applications from\nthe comfort of your command line.\n\nPlease read our guide for a quickstart:\nhttp://guides.webbynode.com/articles/rapidapps/\n\nFor more information use the commands:\nwn help\nwn guides\n\n"
|
33
17
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Webbynode", "--main", "README.rdoc"]
|
34
18
|
s.require_paths = ["lib"]
|
35
|
-
s.rubyforge_project =
|
36
|
-
s.rubygems_version =
|
37
|
-
s.summary =
|
19
|
+
s.rubyforge_project = "webbynode"
|
20
|
+
s.rubygems_version = "1.8.10"
|
21
|
+
s.summary = "Webbynode Deployment Gem"
|
38
22
|
|
39
23
|
if s.respond_to? :specification_version then
|
40
24
|
s.specification_version = 3
|