rudy 0.7.4 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +14 -6
- data/README.rdoc +8 -0
- data/Rudyfile +3 -3
- data/bin/rudy +2 -3
- data/bin/rudy-ec2 +3 -2
- data/bin/rudy-s3 +1 -2
- data/bin/rudy-sdb +1 -2
- data/lib/rudy/aws/ec2/address.rb +3 -3
- data/lib/rudy/aws/ec2/image.rb +3 -3
- data/lib/rudy/cli/aws/ec2/images.rb +14 -14
- data/lib/rudy/cli/aws/ec2/instances.rb +2 -5
- data/lib/rudy/config.rb +2 -1
- data/lib/rudy/global.rb +2 -1
- data/lib/rudy/huxtable.rb +4 -0
- data/lib/rudy/machines.rb +20 -8
- data/lib/rudy/metadata.rb +1 -0
- data/lib/rudy/routines/release.rb +1 -3
- data/lib/rudy/routines/shutdown.rb +6 -5
- data/lib/rudy/routines/startup.rb +2 -4
- data/lib/rudy/routines.rb +26 -16
- data/lib/rudy.rb +7 -3
- data/rudy.gemspec +5 -5
- metadata +6 -6
data/CHANGES.txt
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
RUDY, CHANGES
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
3
|
+
|
4
|
+
#### 0.7.6 (2009-05-18) ###############################
|
5
|
+
|
6
|
+
* ADDED: Better windows instance support during routines
|
7
|
+
* ADDED: "os" keyword to routines DSL
|
8
|
+
* ADDED: Config defaults for "yes" global (thanks sabat)
|
9
|
+
* FIXED: Handle exception when assigning inappropriate IP Address.
|
10
|
+
|
11
|
+
|
12
|
+
#### 0.7.5 (2009-05-12) ###############################
|
13
|
+
|
14
|
+
* CHANGE: rudy-ec2 console now displays windows password automatically if keypair is supplied.
|
15
|
+
* ADDED: register and destroy commands to rudy-ec2 images
|
16
|
+
|
9
17
|
|
10
18
|
#### 0.7.4 (2009-05-10) ###############################
|
11
19
|
|
data/README.rdoc
CHANGED
@@ -105,6 +105,14 @@ I'm very open to contributions!
|
|
105
105
|
* Rudy::AWS::SDB adapted from aws_sdb by Tim Dysinger (http://dysinger.net)
|
106
106
|
|
107
107
|
|
108
|
+
== Related Projects
|
109
|
+
|
110
|
+
* Pool Party -- http://www.poolpartyrb.com/
|
111
|
+
* Rubber -- http://github.com/wr0ngway/rubber/wikis
|
112
|
+
* Moonshine -- http://github.com/railsmachine/moonshine/tree
|
113
|
+
* Boto -- http://code.google.com/p/boto/
|
114
|
+
|
115
|
+
|
108
116
|
== License
|
109
117
|
|
110
118
|
See: LICENSE.txt
|
data/Rudyfile
CHANGED
@@ -169,13 +169,13 @@ routines do
|
|
169
169
|
|
170
170
|
anything do # $ rudy anything
|
171
171
|
before :display_uptime # Specify a dependency
|
172
|
-
script
|
173
|
-
ls :l
|
172
|
+
script :rudy do # This is Ruby, so any valid syntax
|
173
|
+
ls :l # can be used in the definitions.
|
174
174
|
end # See: SysInfo gem for more info.
|
175
175
|
end
|
176
176
|
|
177
177
|
display_uptime do # $ rudy display-uptime
|
178
|
-
script
|
178
|
+
script :rudy do # NOTE: You can use 'dashes' on the
|
179
179
|
uptime # command-line instead of underscores
|
180
180
|
end
|
181
181
|
end
|
data/bin/rudy
CHANGED
@@ -9,8 +9,7 @@
|
|
9
9
|
#
|
10
10
|
|
11
11
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
12
|
-
|
13
|
-
#require 'rubygems'
|
12
|
+
#$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'drydock', 'lib')
|
14
13
|
|
15
14
|
#$SAFE = 1 # require is unsafe in Ruby 1.9??
|
16
15
|
|
@@ -21,7 +20,7 @@ require 'rudy/cli'
|
|
21
20
|
# Command-line interface for /bin/rudy
|
22
21
|
class RudyCLI < Rudy::CLI::Base
|
23
22
|
|
24
|
-
debug :
|
23
|
+
debug :on
|
25
24
|
default :machines
|
26
25
|
trawler :passthrough
|
27
26
|
|
data/bin/rudy-ec2
CHANGED
@@ -10,12 +10,11 @@
|
|
10
10
|
#
|
11
11
|
|
12
12
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
13
|
-
#require 'rubygems'
|
14
13
|
|
14
|
+
require 'drydock'
|
15
15
|
require 'rudy'
|
16
16
|
require 'rudy/cli'
|
17
17
|
|
18
|
-
require 'drydock'
|
19
18
|
|
20
19
|
# Command-line interface for bin/rudy-ec2
|
21
20
|
module RudyCLI_EC2
|
@@ -102,6 +101,7 @@ module RudyCLI_EC2
|
|
102
101
|
usage "rudy-ec2 images -o 123456789012"
|
103
102
|
usage "rudy-ec2 images -o amazon"
|
104
103
|
usage "rudy-ec2 images -o self"
|
104
|
+
usage "rudy-ec2 images -R bucket/ami-name.manifest.xml"
|
105
105
|
option :o, :owner, String, "Amazon Account Number or one of: amazon, self"
|
106
106
|
option :l, :all, "Display all registered machine images (warning: slow)"
|
107
107
|
#option :p, :private, "Private images only"
|
@@ -110,6 +110,7 @@ module RudyCLI_EC2
|
|
110
110
|
option :u, :user, String, "Username to connect as (used for creating an image)"
|
111
111
|
action :C, :create, "Create an image"
|
112
112
|
#action :P, :prepare, "Prepare a running instance to be used as an image"
|
113
|
+
action :R, :register, "Register an image"
|
113
114
|
action :D, :destroy, "Deregister an image (does not remove image files from S3)"
|
114
115
|
argv :ami
|
115
116
|
command :images => Rudy::CLI::AWS::EC2::Images
|
data/bin/rudy-s3
CHANGED
@@ -10,11 +10,10 @@
|
|
10
10
|
#
|
11
11
|
|
12
12
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
13
|
-
#require 'rubygems'
|
14
13
|
|
14
|
+
require 'drydock'
|
15
15
|
require 'rudy'
|
16
16
|
require 'rudy/cli'
|
17
|
-
require 'drydock'
|
18
17
|
|
19
18
|
# Command-line interface for bin/rudy-s3
|
20
19
|
module RudyCLI_S3
|
data/bin/rudy-sdb
CHANGED
@@ -10,11 +10,10 @@
|
|
10
10
|
#
|
11
11
|
|
12
12
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place
|
13
|
-
#require 'rubygems'
|
14
13
|
|
14
|
+
require 'drydock'
|
15
15
|
require 'rudy'
|
16
16
|
require 'rudy/cli'
|
17
|
-
require 'drydock'
|
18
17
|
|
19
18
|
# Command-line interface for bin/rudy-sdb
|
20
19
|
module RudyCLI_SDB
|
data/lib/rudy/aws/ec2/address.rb
CHANGED
@@ -54,8 +54,8 @@ module Rudy::AWS
|
|
54
54
|
|
55
55
|
address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
|
56
56
|
instance = instance.awsid if instance.is_a?(Rudy::AWS::EC2::Instance)
|
57
|
-
raise UnknownAddress unless exists?(address)
|
58
|
-
raise AddressAssociated if associated?(address)
|
57
|
+
raise UnknownAddress, address unless exists?(address)
|
58
|
+
raise AddressAssociated, address if associated?(address)
|
59
59
|
|
60
60
|
opts ={
|
61
61
|
:instance_id => instance,
|
@@ -134,7 +134,7 @@ module Rudy::AWS
|
|
134
134
|
# Returns true if the given address is assigned to the current account
|
135
135
|
def exists?(address)
|
136
136
|
address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
|
137
|
-
list
|
137
|
+
list do |a|
|
138
138
|
return true if a.ipaddress == address
|
139
139
|
end
|
140
140
|
false
|
data/lib/rudy/aws/ec2/image.rb
CHANGED
@@ -106,7 +106,7 @@ module Rudy::AWS
|
|
106
106
|
:image_id => id
|
107
107
|
}
|
108
108
|
ret = @ec2.deregister_image(opts)
|
109
|
-
|
109
|
+
return false unless ret && ret.is_a?(Hash)
|
110
110
|
true
|
111
111
|
end
|
112
112
|
|
@@ -117,8 +117,8 @@ module Rudy::AWS
|
|
117
117
|
:image_location => path
|
118
118
|
}
|
119
119
|
ret = @ec2.register_image(opts)
|
120
|
-
|
121
|
-
|
120
|
+
return nil unless ret && ret.is_a?(Hash)
|
121
|
+
ret['imageId']
|
122
122
|
end
|
123
123
|
|
124
124
|
# imageOwnerId: "203338247012"
|
@@ -155,24 +155,24 @@ module AWS; module EC2;
|
|
155
155
|
|
156
156
|
end
|
157
157
|
|
158
|
-
def
|
158
|
+
def destroy_images_valid?
|
159
159
|
unless @argv.ami && Rudy::Utils.is_id?(:image, @argv.ami)
|
160
|
-
raise "
|
160
|
+
raise "Must supply an AMI ID (ami-XXXXXXX)"
|
161
161
|
end
|
162
|
+
@rimages = Rudy::AWS::EC2::Images.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
162
163
|
end
|
163
|
-
def
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
if rimages.deregister(ami)
|
171
|
-
puts "Done!"
|
172
|
-
else
|
173
|
-
puts "There was an unknown problem!"
|
164
|
+
def destroy_images
|
165
|
+
puts @rimages.deregister(@argv.ami) ? "Done" : "Unknown error"
|
166
|
+
end
|
167
|
+
|
168
|
+
def register_images_valid?
|
169
|
+
unless @argv.first
|
170
|
+
raise "Must supply a valid manifest path (bucket/ami-name.manifest.xml)"
|
174
171
|
end
|
175
|
-
|
172
|
+
@rimages = Rudy::AWS::EC2::Images.new(@@global.accesskey, @@global.secretkey, @@global.region)
|
173
|
+
end
|
174
|
+
def register_images
|
175
|
+
puts @rimages.register(@argv.first)
|
176
176
|
end
|
177
177
|
|
178
178
|
|
@@ -144,11 +144,8 @@ module AWS; module EC2;
|
|
144
144
|
encrtypted_text = ($1 || '').strip
|
145
145
|
k = Rye::Key.from_file(@@global.pkey)
|
146
146
|
pword = k.decrypt(encrtypted_text)
|
147
|
-
|
148
|
-
|
149
|
-
answer = "%s: %s" % ['password', pword]
|
150
|
-
Annoy.timed_display(answer, STDERR, 10)
|
151
|
-
end
|
147
|
+
answer = "%s: %s" % ['password', pword]
|
148
|
+
Annoy.timed_display(answer, STDERR, 10)
|
152
149
|
puts
|
153
150
|
else
|
154
151
|
puts "Please supply a private key path to decode the administrator password"
|
data/lib/rudy/config.rb
CHANGED
@@ -102,7 +102,8 @@ module Rudy
|
|
102
102
|
environment :stage
|
103
103
|
role :app
|
104
104
|
user Rudy.sysinfo.user.to_sym
|
105
|
-
color false #
|
105
|
+
color false # Terminal colors? true/false
|
106
|
+
yes false # Auto-confirm? true/false
|
106
107
|
end
|
107
108
|
}
|
108
109
|
Rudy::Utils.write_to_file(Rudy::CONFIG_FILE, rudy_config, 'w', 0600)
|
data/lib/rudy/global.rb
CHANGED
@@ -56,7 +56,7 @@ module Rudy
|
|
56
56
|
if config.defaults?
|
57
57
|
# Apply the "color" default before "nocolor" so nocolor has presedence
|
58
58
|
@nocolor = !config.defaults.color unless config.defaults.color.nil?
|
59
|
-
%w[region zone environment role position user nocolor quiet].each do |name|
|
59
|
+
%w[region zone environment role position user nocolor quiet yes].each do |name|
|
60
60
|
val = config.defaults.send(name)
|
61
61
|
self.send("#{name}=", val) unless val.nil?
|
62
62
|
end
|
@@ -101,6 +101,7 @@ module Rudy
|
|
101
101
|
@position &&= @position.to_s.rjust(2, '0')
|
102
102
|
@format &&= @format.to_sym rescue nil
|
103
103
|
@quiet ? Rudy.enable_quiet : Rudy.disable_quiet
|
104
|
+
@yes ? Rudy.enable_yes : Rudy.disable_yes
|
104
105
|
end
|
105
106
|
|
106
107
|
def apply_environment_variables
|
data/lib/rudy/huxtable.rb
CHANGED
data/lib/rudy/machines.rb
CHANGED
@@ -21,6 +21,8 @@ module Rudy
|
|
21
21
|
field :dns_private
|
22
22
|
field :state
|
23
23
|
|
24
|
+
field :os
|
25
|
+
|
24
26
|
attr_reader :instance
|
25
27
|
|
26
28
|
def init
|
@@ -32,6 +34,7 @@ module Rudy
|
|
32
34
|
@role = @@global.role
|
33
35
|
@position = find_next_position || '01'
|
34
36
|
@state = 'no-instance'
|
37
|
+
@os = 'unknown'
|
35
38
|
end
|
36
39
|
|
37
40
|
def liner_note
|
@@ -117,20 +120,29 @@ module Rudy
|
|
117
120
|
:machine_data => Machine.generate_machine_data.to_yaml
|
118
121
|
}.merge(opts)
|
119
122
|
|
123
|
+
@os = current_machine_os
|
124
|
+
|
120
125
|
@ec2inst.create(opts) do |inst|
|
121
126
|
@awsid = inst.awsid
|
122
127
|
@created = @starts = Time.now
|
123
128
|
@state = inst.state
|
124
|
-
#
|
125
|
-
|
129
|
+
# We need to be safe when creating machines because if an exception is
|
130
|
+
# raised, instances will have been creating but the calling class won't know.
|
131
|
+
begin
|
126
132
|
address = current_machine_address(@position)
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
+
# Assign IP address only if we have one for that position
|
134
|
+
if address
|
135
|
+
# Make sure the address is associated to the current account
|
136
|
+
if @radd.exists?(address)
|
137
|
+
puts "Associating #{address} to #{inst.awsid}"
|
138
|
+
@radd.associate(address, inst.awsid)
|
139
|
+
else
|
140
|
+
STDERR.puts "Unknown address: #{address}"
|
141
|
+
end
|
133
142
|
end
|
143
|
+
rescue => ex
|
144
|
+
STDERR.puts "Error: #{ex.message}"
|
145
|
+
STDERR.puts ex.backtrace if Rudy.debug?
|
134
146
|
end
|
135
147
|
end
|
136
148
|
|
data/lib/rudy/metadata.rb
CHANGED
@@ -6,6 +6,7 @@ module Rudy
|
|
6
6
|
def initialize(*args)
|
7
7
|
a, s, r = @@global.accesskey, @@global.secretkey, @@global.region
|
8
8
|
@sdb = Rudy::AWS::SDB.new(a, s, r)
|
9
|
+
@radd = Rudy::AWS::EC2::Addresses.new(a, s, r)
|
9
10
|
@rinst = Rudy::AWS::EC2::Instances.new(a, s, r)
|
10
11
|
@rgrp = Rudy::AWS::EC2::Groups.new(a, s, r)
|
11
12
|
@rkey = Rudy::AWS::EC2::KeyPairs.new(a, s, r)
|
@@ -23,13 +23,11 @@ module Rudy; module Routines;
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
machines =
|
27
|
-
generic_machine_runner(:list) do |machine,rbox|
|
26
|
+
machines = generic_machine_runner(:list) do |machine,rbox|
|
28
27
|
vlist.each do |scm|
|
29
28
|
puts task_separator("CREATING REMOTE #{scm.engine.to_s.upcase} CHECKOUT")
|
30
29
|
scm.create_remote_checkout(rbox)
|
31
30
|
end
|
32
|
-
machines << machine
|
33
31
|
end
|
34
32
|
|
35
33
|
machines
|
@@ -13,10 +13,9 @@ module Rudy; module Routines;
|
|
13
13
|
STDERR.puts "[this is a generic shutdown routine]"
|
14
14
|
@routine = {}
|
15
15
|
end
|
16
|
-
|
17
|
-
generic_machine_runner(:
|
18
|
-
|
19
|
-
machines << machine
|
16
|
+
|
17
|
+
machines = generic_machine_runner(:list) do |machine|
|
18
|
+
machine.destroy
|
20
19
|
end
|
21
20
|
machines
|
22
21
|
end
|
@@ -24,8 +23,10 @@ module Rudy; module Routines;
|
|
24
23
|
# Called by generic_machine_runner
|
25
24
|
def raise_early_exceptions
|
26
25
|
rmach = Rudy::Machines.new
|
27
|
-
raise Rudy::PrivateKeyNotFound, root_keypairpath unless has_keypair?(:root)
|
28
26
|
raise MachineGroupNotRunning, current_machine_group unless rmach.running?
|
27
|
+
# Check private key after machine group, otherwise we could get an error
|
28
|
+
# about there being no key which doesn't make sense if the group isn't running.
|
29
|
+
raise Rudy::PrivateKeyNotFound, root_keypairpath unless has_keypair?(:root)
|
29
30
|
end
|
30
31
|
|
31
32
|
end
|
@@ -10,16 +10,14 @@ module Rudy; module Routines;
|
|
10
10
|
# * +each_mach+ is an optional block which is executed between
|
11
11
|
# disk creation and the after scripts. The will receives two
|
12
12
|
# arguments: instances of Rudy::Machine and Rye::Box.
|
13
|
+
# Returns an Array of Rudy::Machine objects
|
13
14
|
def execute(&each_mach)
|
14
15
|
routine_separator(:startup)
|
15
16
|
unless @routine
|
16
17
|
STDERR.puts "[this is a generic startup routine]"
|
17
18
|
@routine = {}
|
18
19
|
end
|
19
|
-
machines =
|
20
|
-
generic_machine_runner(:create) do |machine,rbox|
|
21
|
-
machines << machine
|
22
|
-
end
|
20
|
+
machines = generic_machine_runner(:create)
|
23
21
|
machines
|
24
22
|
end
|
25
23
|
|
data/lib/rudy/routines.rb
CHANGED
@@ -94,13 +94,11 @@ module Rudy
|
|
94
94
|
end
|
95
95
|
}
|
96
96
|
|
97
|
-
unless has_remote_task?(routine)
|
98
|
-
puts "[no remote tasks]"
|
99
|
-
return
|
100
|
-
end
|
101
97
|
|
102
|
-
# Execute the action (create, list, destroy, restart)
|
103
|
-
rmach.send(machine_action)
|
98
|
+
# Execute the action (create, list, destroy, restart)
|
99
|
+
machines = enjoy_every_sandwich([]) { rmach.send(machine_action) }
|
100
|
+
|
101
|
+
machines.each do |machine|
|
104
102
|
puts machine_separator(machine.name, machine.awsid) unless skip_header
|
105
103
|
|
106
104
|
unless skip_check
|
@@ -109,15 +107,19 @@ module Rudy
|
|
109
107
|
inst = machine.get_instance
|
110
108
|
inst && inst.running?
|
111
109
|
}
|
110
|
+
end
|
112
111
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
112
|
+
# Add instance info to machine and save it. This is really important
|
113
|
+
# for the initial startup so the metadata is updated right away. But
|
114
|
+
# it's also important to call here because if a routine was executed
|
115
|
+
# and an unexpected exception occurs before this update is executed
|
116
|
+
# the machine metadata won't contain the DNS information. Calling it
|
117
|
+
# here ensure that the metadata is always up-to-date.
|
118
|
+
machine.update
|
120
119
|
|
120
|
+
next if (machine.os || '').to_s == 'win32'
|
121
|
+
|
122
|
+
unless skip_check
|
121
123
|
msg = preliminary_separator("Waiting for SSH daemon...")
|
122
124
|
Rudy::Utils.waiter(2, 60, STDOUT, msg, 0) {
|
123
125
|
Rudy::Utils.service_available?(machine.dns_public, 22)
|
@@ -152,7 +154,13 @@ module Rudy
|
|
152
154
|
}
|
153
155
|
end
|
154
156
|
|
155
|
-
|
157
|
+
## NOTE: This prevents shutdown from doing its thing and prob
|
158
|
+
## isn't necessary.
|
159
|
+
##unless has_remote_task?(routine)
|
160
|
+
## puts "[no remote tasks]"
|
161
|
+
## next
|
162
|
+
##end
|
163
|
+
|
156
164
|
enjoy_every_sandwich {
|
157
165
|
if Rudy::Routines::UserHelper.adduser?(routine) # adduser
|
158
166
|
puts task_separator("ADD USER")
|
@@ -229,6 +237,7 @@ module Rudy
|
|
229
237
|
execute_dependency(after_dependencies, skip_check, skip_header)
|
230
238
|
}
|
231
239
|
|
240
|
+
machines
|
232
241
|
end
|
233
242
|
|
234
243
|
def execute_dependency(depends, skip_check, skip_header)
|
@@ -293,14 +302,15 @@ module Rudy
|
|
293
302
|
#puts '%-40s' % [name.bright]
|
294
303
|
end
|
295
304
|
|
296
|
-
def enjoy_every_sandwich(&bloc_party)
|
305
|
+
def enjoy_every_sandwich(ret=nil, &bloc_party)
|
297
306
|
begin
|
298
|
-
bloc_party.call
|
307
|
+
ret = bloc_party.call
|
299
308
|
rescue => ex
|
300
309
|
STDERR.puts " Error: #{ex.message}".color(:red)
|
301
310
|
STDERR.puts ex.backtrace if Rudy.debug?
|
302
311
|
exit 12 unless keep_going?
|
303
312
|
end
|
313
|
+
ret
|
304
314
|
end
|
305
315
|
|
306
316
|
def keep_going?
|
data/lib/rudy.rb
CHANGED
@@ -4,8 +4,8 @@ unless defined?(RUDY_HOME)
|
|
4
4
|
RUDY_LIB = File.join(File.dirname(__FILE__), '..', 'lib')
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
local_libs = %w{net-scp amazon-ec2 aws-s3 caesars drydock rye storable sysinfo annoy}
|
8
|
+
local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
|
9
9
|
|
10
10
|
require 'digest/md5'
|
11
11
|
require 'stringio'
|
@@ -38,7 +38,7 @@ module Rudy
|
|
38
38
|
unless defined?(MAJOR)
|
39
39
|
MAJOR = 0.freeze
|
40
40
|
MINOR = 7.freeze
|
41
|
-
TINY =
|
41
|
+
TINY = 6.freeze
|
42
42
|
end
|
43
43
|
def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
|
44
44
|
def self.to_f; self.to_s.to_f; end
|
@@ -88,6 +88,7 @@ module Rudy
|
|
88
88
|
}.freeze
|
89
89
|
|
90
90
|
@@quiet = false
|
91
|
+
@@yes = false
|
91
92
|
@@debug = false
|
92
93
|
@@sysinfo = SysInfo.new.freeze
|
93
94
|
|
@@ -95,10 +96,13 @@ module Rudy
|
|
95
96
|
|
96
97
|
def Rudy.debug?; @@debug == true; end
|
97
98
|
def Rudy.quiet?; @@quiet == true; end
|
99
|
+
def Rudy.yes?; @@yes == true; end
|
98
100
|
def Rudy.enable_debug; @@debug = true; end
|
99
101
|
def Rudy.enable_quiet; @@quiet = true; end
|
102
|
+
def Rudy.enable_yes; @@yes = true; end
|
100
103
|
def Rudy.disable_debug; @@debug = false; end
|
101
104
|
def Rudy.disable_quiet; @@quiet = false; end
|
105
|
+
def Rudy.disable_yes; @@yes = false; end
|
102
106
|
|
103
107
|
def Rudy.sysinfo; @@sysinfo; end
|
104
108
|
def sysinfo; @@sysinfo; end
|
data/rudy.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
2
|
s.name = "rudy"
|
3
3
|
s.rubyforge_project = 'rudy'
|
4
|
-
s.version = "0.7.
|
4
|
+
s.version = "0.7.6"
|
5
5
|
s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
|
6
6
|
s.description = s.summary
|
7
7
|
s.author = "Delano Mandelbaum"
|
@@ -14,11 +14,11 @@
|
|
14
14
|
s.require_paths = %w[lib]
|
15
15
|
s.rubygems_version = '1.1.1'
|
16
16
|
|
17
|
-
s.add_dependency 'drydock', '>= 0.6.
|
18
|
-
s.add_dependency 'caesars', '>= 0.6.
|
19
|
-
s.add_dependency 'rye', '>= 0.6.
|
17
|
+
s.add_dependency 'drydock', '>= 0.6.3'
|
18
|
+
s.add_dependency 'caesars', '>= 0.6.6'
|
19
|
+
s.add_dependency 'rye', '>= 0.6.5'
|
20
20
|
s.add_dependency 'sysinfo', '>= 0.5.1'
|
21
|
-
s.add_dependency 'storable', '>= 0.5.
|
21
|
+
s.add_dependency 'storable', '>= 0.5.2'
|
22
22
|
s.add_dependency 'annoy', '>= 0.5.0'
|
23
23
|
|
24
24
|
s.add_dependency 'grit'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rudy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delano Mandelbaum
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-05-
|
12
|
+
date: 2009-05-18 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.6.
|
23
|
+
version: 0.6.3
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: caesars
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.6.
|
33
|
+
version: 0.6.6
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rye
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.6.
|
43
|
+
version: 0.6.5
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: sysinfo
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.5.
|
63
|
+
version: 0.5.2
|
64
64
|
version:
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: annoy
|