ors 0.2.3 → 0.2.4
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.
- data/lib/ors/commands/help.rb +2 -1
- data/lib/ors/commands/runner.rb +35 -0
- data/lib/ors/helpers.rb +5 -4
- data/lib/ors/version.rb +1 -1
- data/spec/ors/commands/runner_spec.rb +42 -0
- data/spec/ors/helpers_spec.rb +8 -0
- metadata +6 -23
data/lib/ors/commands/help.rb
CHANGED
@@ -9,12 +9,13 @@ Usage: ./ors <action> [environment=production] [options]
|
|
9
9
|
=== Actions
|
10
10
|
changes View changes between what is deployed and committed
|
11
11
|
check Prints out contents of restart.timestamp on the app servers
|
12
|
-
console Bring up a console on the
|
12
|
+
console Bring up a console on the console server
|
13
13
|
deploy Update the code, run the migrations, and restart unicorn
|
14
14
|
help You're looking at it
|
15
15
|
logs Show the last few log entries from the production servers
|
16
16
|
migrate Runs the migrations on the migration server
|
17
17
|
restart Retarts unicorn on the app servers
|
18
|
+
runner Runs ruby code via Rails' runner on the console server
|
18
19
|
setup Sets up the default environment on the servers
|
19
20
|
start Starts up unicorn on the app servers
|
20
21
|
stop Stops unicorn on the app servers
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ORS::Commands
|
2
|
+
class Runner < Base
|
3
|
+
def execute
|
4
|
+
begin
|
5
|
+
code = ORS::Config.options[ ORS::Config.options.index{|e| e =~ /^(-c|--code)$/} + 1 ]
|
6
|
+
raise if code.strip.empty?
|
7
|
+
rescue
|
8
|
+
fatal "ERROR: Missing option --code 'ruby code'."
|
9
|
+
end
|
10
|
+
results = execute_command console_server,
|
11
|
+
%(source ~/.rvm/scripts/rvm),
|
12
|
+
%({ cd #{deploy_directory} > /dev/null; }), # Silence RVM's "Using... gemset..."
|
13
|
+
%(if [ -f script/rails ]; then bundle exec rails runner -e #{environment} \\"#{code}\\"; else ./script/runner -e #{environment} \\"#{code}\\"; fi),
|
14
|
+
:capture => true, :quiet_ssh => true
|
15
|
+
results.sub!(/\AUsing BufferedLogger due to exception: .*?\n/, '') # The central_logger gem spits this out without any way of shutting it up
|
16
|
+
puts results
|
17
|
+
end
|
18
|
+
|
19
|
+
def help
|
20
|
+
puts <<-END
|
21
|
+
Usage: ./ors runner [environment=production] --code "ruby code here" [options]
|
22
|
+
|
23
|
+
=== Description
|
24
|
+
Runs rails runner returning the result on STDOUT.
|
25
|
+
The ruby code will be transmitted within several nested quotes: '"\"ruby code here\""'
|
26
|
+
Keep that in mind if you need to use quotes.
|
27
|
+
|
28
|
+
=== Options
|
29
|
+
--code (or -c) The code to run.
|
30
|
+
--pretend (or -p) Don't execute anything, just show me what you're going to do
|
31
|
+
--no-gateway (or -ng) Don't use a gateway (if you're inside the firewall)
|
32
|
+
END
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ors/helpers.rb
CHANGED
@@ -79,9 +79,9 @@ module ORS
|
|
79
79
|
end.map {|thread| thread.join }
|
80
80
|
end
|
81
81
|
|
82
|
-
# options = {:exec => ?, :capture => ?}
|
82
|
+
# options = {:exec => ?, :capture => ?, :quiet_ssh => ?}
|
83
83
|
def execute_command server, *command_array
|
84
|
-
options = {:exec => false, :capture => false}
|
84
|
+
options = {:exec => false, :capture => false, :quiet_ssh => false}
|
85
85
|
options.merge!(command_array.pop) if command_array.last.is_a?(Hash)
|
86
86
|
options[:local] = true if server.to_s == "localhost"
|
87
87
|
|
@@ -118,14 +118,15 @@ module ORS
|
|
118
118
|
|
119
119
|
commands = command_array.join " && "
|
120
120
|
psuedo_tty = options[:exec] ? '-t ' : ''
|
121
|
+
quiet_ssh = options[:quiet_ssh] ? '-q ' : ''
|
121
122
|
|
122
123
|
if options[:local]
|
123
124
|
commands
|
124
125
|
else
|
125
126
|
if use_gateway
|
126
|
-
%(ssh #{psuedo_tty}#{gateway} 'ssh #{psuedo_tty}#{deploy_user}@#{server} "#{commands}"')
|
127
|
+
%(ssh #{quiet_ssh}#{psuedo_tty}#{gateway} 'ssh #{quiet_ssh}#{psuedo_tty}#{deploy_user}@#{server} "#{commands}"')
|
127
128
|
else
|
128
|
-
%(ssh #{psuedo_tty}#{deploy_user}@#{server} "#{commands}")
|
129
|
+
%(ssh #{quiet_ssh}#{psuedo_tty}#{deploy_user}@#{server} "#{commands}")
|
129
130
|
end
|
130
131
|
end
|
131
132
|
end
|
data/lib/ors/version.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ORS::Commands::Runner do
|
4
|
+
|
5
|
+
context "#run" do
|
6
|
+
before do
|
7
|
+
stub(subject).name {'abc/growhealthy'}
|
8
|
+
stub(subject).environment {'production'}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should require --code 'ruby code'" do
|
12
|
+
lambda {subject.execute}.should raise_error
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should require an argument to --code" do
|
16
|
+
ORS::Config.parse_options %w(--code)
|
17
|
+
lambda {subject.execute}.should raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should require an argument to -c" do
|
21
|
+
ORS::Config.parse_options %w(--c)
|
22
|
+
lambda {subject.execute}.should raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should require a non-empty argument to --code" do
|
26
|
+
ORS::Config.parse_options ['--code', ' ']
|
27
|
+
lambda {subject.execute}.should raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should be successful with an argument to --code" do
|
31
|
+
ORS::Config.parse_options %w(--code true)
|
32
|
+
mock(subject).execute_command(is_a(String), is_a(String), is_a(String), is_a(String), is_a(Hash)).returns("results")
|
33
|
+
lambda {subject.execute}.should_not raise_error
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be successful with an argument to -c" do
|
37
|
+
ORS::Config.parse_options %w(-c true)
|
38
|
+
mock(subject).execute_command(is_a(String), is_a(String), is_a(String), is_a(String), is_a(Hash)).returns("results")
|
39
|
+
lambda {subject.execute}.should_not raise_error
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/spec/ors/helpers_spec.rb
CHANGED
@@ -52,6 +52,10 @@ describe ORS::Helpers do
|
|
52
52
|
it "should build the command with psuedo tty" do
|
53
53
|
subject.build_command("server", %(cd /tmp), :exec => true).should == %(ssh -t deploy-gateway 'ssh -t deployer@server "cd /tmp"')
|
54
54
|
end
|
55
|
+
|
56
|
+
it "should build the command with quiet mode" do
|
57
|
+
subject.build_command("server", %(cd /tmp), :quiet_ssh => true).should == %(ssh -q deploy-gateway 'ssh -q deployer@server "cd /tmp"')
|
58
|
+
end
|
55
59
|
end
|
56
60
|
|
57
61
|
context "without gateway" do
|
@@ -64,6 +68,10 @@ describe ORS::Helpers do
|
|
64
68
|
it "should build the command with psuedo tty" do
|
65
69
|
subject.build_command("server", %(cd /tmp), :exec => true).should == %(ssh -t deployer@server "cd /tmp")
|
66
70
|
end
|
71
|
+
|
72
|
+
it "should build the command with quiet mode" do
|
73
|
+
subject.build_command("server", %(cd /tmp), :quiet_ssh => true).should == %(ssh -q deployer@server "cd /tmp")
|
74
|
+
end
|
67
75
|
end
|
68
76
|
end
|
69
77
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 17
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 3
|
10
|
-
version: 0.2.3
|
5
|
+
version: 0.2.4
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Jason Dew and John Long
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-09-01 00:00:00 -04:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,9 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ">="
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
24
|
version: "0"
|
33
25
|
type: :runtime
|
34
26
|
version_requirements: *id001
|
@@ -40,9 +32,6 @@ dependencies:
|
|
40
32
|
requirements:
|
41
33
|
- - ">="
|
42
34
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
35
|
version: "0"
|
47
36
|
type: :development
|
48
37
|
version_requirements: *id002
|
@@ -54,9 +43,6 @@ dependencies:
|
|
54
43
|
requirements:
|
55
44
|
- - ">="
|
56
45
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
46
|
version: "0"
|
61
47
|
type: :development
|
62
48
|
version_requirements: *id003
|
@@ -90,6 +76,7 @@ files:
|
|
90
76
|
- lib/ors/commands/logs.rb
|
91
77
|
- lib/ors/commands/migrate.rb
|
92
78
|
- lib/ors/commands/restart.rb
|
79
|
+
- lib/ors/commands/runner.rb
|
93
80
|
- lib/ors/commands/setup.rb
|
94
81
|
- lib/ors/commands/start.rb
|
95
82
|
- lib/ors/commands/stop.rb
|
@@ -108,6 +95,7 @@ files:
|
|
108
95
|
- spec/ors/commands/deploy_spec.rb
|
109
96
|
- spec/ors/commands/help_spec.rb
|
110
97
|
- spec/ors/commands/logs_spec.rb
|
98
|
+
- spec/ors/commands/runner_spec.rb
|
111
99
|
- spec/ors/commands/update_spec.rb
|
112
100
|
- spec/ors/config_spec.rb
|
113
101
|
- spec/ors/helpers_spec.rb
|
@@ -127,23 +115,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
115
|
requirements:
|
128
116
|
- - ">="
|
129
117
|
- !ruby/object:Gem::Version
|
130
|
-
hash: 3
|
131
|
-
segments:
|
132
|
-
- 0
|
133
118
|
version: "0"
|
134
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
120
|
none: false
|
136
121
|
requirements:
|
137
122
|
- - ">="
|
138
123
|
- !ruby/object:Gem::Version
|
139
|
-
hash: 3
|
140
|
-
segments:
|
141
|
-
- 0
|
142
124
|
version: "0"
|
143
125
|
requirements: []
|
144
126
|
|
145
127
|
rubyforge_project: ors
|
146
|
-
rubygems_version: 1.
|
128
|
+
rubygems_version: 1.6.2
|
147
129
|
signing_key:
|
148
130
|
specification_version: 3
|
149
131
|
summary: Heroku-like deployment utilities for ORS
|
@@ -155,6 +137,7 @@ test_files:
|
|
155
137
|
- spec/ors/commands/deploy_spec.rb
|
156
138
|
- spec/ors/commands/help_spec.rb
|
157
139
|
- spec/ors/commands/logs_spec.rb
|
140
|
+
- spec/ors/commands/runner_spec.rb
|
158
141
|
- spec/ors/commands/update_spec.rb
|
159
142
|
- spec/ors/config_spec.rb
|
160
143
|
- spec/ors/helpers_spec.rb
|