rudy 0.7.4 → 0.7.6
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/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
|