solutious-rudy 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/CHANGES.txt +28 -5
  2. data/README.rdoc +1 -1
  3. data/Rudyfile +51 -19
  4. data/bin/ird +153 -0
  5. data/bin/rudy +18 -23
  6. data/bin/rudy-ec2 +5 -10
  7. data/bin/rudy-s3 +1 -3
  8. data/bin/rudy-sdb +0 -2
  9. data/examples/README.md +10 -0
  10. data/examples/debian-sinatra-passenger/commands.rb +19 -0
  11. data/examples/debian-sinatra-passenger/machines.rb +32 -0
  12. data/examples/debian-sinatra-passenger/routines.rb +30 -0
  13. data/examples/debian-sinatra-thin/commands.rb +17 -0
  14. data/examples/debian-sinatra-thin/machines.rb +35 -0
  15. data/examples/debian-sinatra-thin/routines.rb +72 -0
  16. data/lib/rudy.rb +8 -17
  17. data/lib/rudy/aws.rb +1 -2
  18. data/lib/rudy/aws/ec2/address.rb +0 -1
  19. data/lib/rudy/aws/ec2/snapshot.rb +11 -0
  20. data/lib/rudy/aws/s3.rb +6 -3
  21. data/lib/rudy/cli.rb +12 -2
  22. data/lib/rudy/cli/aws/ec2/candy.rb +19 -48
  23. data/lib/rudy/cli/aws/ec2/images.rb +109 -122
  24. data/lib/rudy/cli/aws/s3/buckets.rb +1 -2
  25. data/lib/rudy/cli/config.rb +13 -0
  26. data/lib/rudy/cli/disks.rb +24 -1
  27. data/lib/rudy/cli/routines.rb +10 -11
  28. data/lib/rudy/config.rb +6 -9
  29. data/lib/rudy/config/objects.rb +4 -0
  30. data/lib/rudy/global.rb +4 -5
  31. data/lib/rudy/huxtable.rb +23 -8
  32. data/lib/rudy/machines.rb +11 -4
  33. data/lib/rudy/metadata.rb +8 -94
  34. data/lib/rudy/metadata/backup.rb +113 -0
  35. data/lib/rudy/metadata/backups.rb +65 -0
  36. data/lib/rudy/{disks.rb → metadata/disk.rb} +36 -69
  37. data/lib/rudy/metadata/disks.rb +67 -0
  38. data/lib/rudy/metadata/objectbase.rb +104 -0
  39. data/lib/rudy/mixins.rb +2 -0
  40. data/lib/rudy/routines.rb +173 -88
  41. data/lib/rudy/routines/helpers/dependshelper.rb +34 -0
  42. data/lib/rudy/routines/helpers/diskhelper.rb +174 -5
  43. data/lib/rudy/routines/helpers/scmhelper.rb +2 -2
  44. data/lib/rudy/routines/helpers/scripthelper.rb +11 -4
  45. data/lib/rudy/routines/passthrough.rb +3 -1
  46. data/lib/rudy/routines/reboot.rb +75 -0
  47. data/lib/rudy/routines/startup.rb +3 -3
  48. data/lib/rudy/scm/git.rb +17 -17
  49. data/lib/rudy/scm/svn.rb +46 -5
  50. data/lib/rudy/utils.rb +3 -2
  51. data/rudy.gemspec +24 -46
  52. data/test/30_sdb_metadata/10_disks_test.rb +5 -5
  53. metadata +35 -67
  54. data/lib/annoy.rb +0 -298
  55. data/lib/console.rb +0 -404
  56. data/lib/escape.rb +0 -305
  57. data/lib/rudy/backup.rb +0 -135
  58. data/lib/storable.rb +0 -292
  59. data/lib/sysinfo.rb +0 -285
  60. data/lib/tryouts.rb +0 -33
  61. data/vendor/highline-1.5.1/CHANGELOG +0 -222
  62. data/vendor/highline-1.5.1/INSTALL +0 -35
  63. data/vendor/highline-1.5.1/LICENSE +0 -7
  64. data/vendor/highline-1.5.1/README +0 -63
  65. data/vendor/highline-1.5.1/Rakefile +0 -82
  66. data/vendor/highline-1.5.1/TODO +0 -6
  67. data/vendor/highline-1.5.1/examples/ansi_colors.rb +0 -38
  68. data/vendor/highline-1.5.1/examples/asking_for_arrays.rb +0 -18
  69. data/vendor/highline-1.5.1/examples/basic_usage.rb +0 -75
  70. data/vendor/highline-1.5.1/examples/color_scheme.rb +0 -32
  71. data/vendor/highline-1.5.1/examples/limit.rb +0 -12
  72. data/vendor/highline-1.5.1/examples/menus.rb +0 -65
  73. data/vendor/highline-1.5.1/examples/overwrite.rb +0 -19
  74. data/vendor/highline-1.5.1/examples/page_and_wrap.rb +0 -322
  75. data/vendor/highline-1.5.1/examples/password.rb +0 -7
  76. data/vendor/highline-1.5.1/examples/trapping_eof.rb +0 -22
  77. data/vendor/highline-1.5.1/examples/using_readline.rb +0 -17
  78. data/vendor/highline-1.5.1/lib/highline.rb +0 -758
  79. data/vendor/highline-1.5.1/lib/highline/color_scheme.rb +0 -120
  80. data/vendor/highline-1.5.1/lib/highline/compatibility.rb +0 -17
  81. data/vendor/highline-1.5.1/lib/highline/import.rb +0 -43
  82. data/vendor/highline-1.5.1/lib/highline/menu.rb +0 -395
  83. data/vendor/highline-1.5.1/lib/highline/question.rb +0 -463
  84. data/vendor/highline-1.5.1/lib/highline/system_extensions.rb +0 -193
  85. data/vendor/highline-1.5.1/setup.rb +0 -1360
  86. data/vendor/highline-1.5.1/test/tc_color_scheme.rb +0 -56
  87. data/vendor/highline-1.5.1/test/tc_highline.rb +0 -823
  88. data/vendor/highline-1.5.1/test/tc_import.rb +0 -54
  89. data/vendor/highline-1.5.1/test/tc_menu.rb +0 -429
  90. data/vendor/highline-1.5.1/test/ts_all.rb +0 -15
@@ -1,285 +0,0 @@
1
- require 'storable'
2
- require 'socket'
3
-
4
- # SystemInfo
5
- #
6
- # A container for the system platform information.
7
- # Portions of this code is from Amazon's EC2 AMI tools, lib/platform.rb.
8
- class SystemInfo < Storable
9
- unless defined?(IMPLEMENTATIONS)
10
- VERSION = 2.freeze
11
- IMPLEMENTATIONS = [
12
-
13
- # These are for JRuby, System.getproperty('os.name').
14
- # For a list of all values, see: http://lopica.sourceforge.net/os.html
15
- #regexp matcher os implementation
16
- [/mac\s*os\s*x/i, :unix, :osx ],
17
- [/sunos/i, :unix, :solaris ],
18
- [/windows\s*ce/i, :win32, :windows ],
19
- [/windows/i, :win32, :windows ],
20
- [/osx/i, :unix, :osx ],
21
-
22
- # TODO: implement other windows matches: # /djgpp|(cyg|ms|bcc)win|mingw/ (from mongrel)
23
-
24
- # These are for RUBY_PLATFORM and JRuby
25
- [/java/i, :java, :java ],
26
- [/darwin/i, :unix, :osx ],
27
- [/linux/i, :unix, :linux ],
28
- [/freebsd/i, :unix, :freebsd ],
29
- [/netbsd/i, :unix, :netbsd ],
30
- [/solaris/i, :unix, :solaris ],
31
- [/irix/i, :unix, :irix ],
32
- [/cygwin/i, :unix, :cygwin ],
33
- [/mswin/i, :win32, :windows ],
34
- [/mingw/i, :win32, :mingw ],
35
- [/bccwin/i, :win32, :bccwin ],
36
- [/wince/i, :win32, :wince ],
37
- [/vms/i, :vms, :vms ],
38
- [/os2/i, :os2, :os2 ],
39
- [nil, :unknown, :unknown ],
40
- ].freeze
41
-
42
- ARCHITECTURES = [
43
- [/(i\d86)/i, :i386 ],
44
- [/x86_64/i, :x86_64 ],
45
- [/x86/i, :i386 ], # JRuby
46
- [/ia64/i, :ia64 ],
47
- [/alpha/i, :alpha ],
48
- [/sparc/i, :sparc ],
49
- [/mips/i, :mips ],
50
- [/powerpc/i, :powerpc ],
51
- [/universal/i,:universal ],
52
- [nil, :unknown ],
53
- ].freeze
54
- end
55
-
56
-
57
- field :os => String
58
- field :implementation => String
59
- field :architecture => String
60
- field :hostname => String
61
- field :ipaddress => String
62
- field :uptime => Float
63
-
64
-
65
- alias :impl :implementation
66
- alias :arch :architecture
67
-
68
-
69
- def initialize
70
- @os, @implementation, @architecture = guess
71
- @hostname, @ipaddress, @uptime = get_info
72
- end
73
-
74
- # guess
75
- #
76
- # This is called at require-time in stella.rb. It guesses
77
- # the current operating system, implementation, architecture.
78
- # Returns [os, impl, arch]
79
- def guess
80
- os = :unknown
81
- impl = :unknown
82
- arch = :unknown
83
- IMPLEMENTATIONS.each do |r, o, i|
84
- if r and RUBY_PLATFORM =~ r
85
- os, impl = [o, i]
86
- break
87
- end
88
- end
89
- ARCHITECTURES.each do |r, a|
90
- if r and RUBY_PLATFORM =~ r
91
- arch = a
92
- break
93
- end
94
- end
95
-
96
- #
97
- if os == :win32
98
- #require 'Win32API'
99
-
100
- # If we're running in java, we'll need to look elsewhere
101
- # for the implementation and architecture.
102
- # We'll replace IMPL and ARCH with what we find.
103
- elsif os == :java
104
- require 'java'
105
- include_class java.lang.System
106
-
107
- osname = System.getProperty("os.name")
108
- IMPLEMENTATIONS.each do |r, o, i|
109
- if r and osname =~ r
110
- impl = i
111
- break
112
- end
113
- end
114
-
115
- osarch = System.getProperty("os.arch")
116
- ARCHITECTURES.each do |r, a|
117
- if r and osarch =~ r
118
- arch = a
119
- break
120
- end
121
- end
122
-
123
- end
124
-
125
- [os, impl, arch]
126
- end
127
-
128
- # get_info
129
- #
130
- # Returns [hostname, ipaddr, uptime] for the local machine
131
- def get_info
132
- hostname = :unknown
133
- ipaddr = :unknown
134
- uptime = :unknown
135
-
136
- begin
137
- hostname = local_hostname
138
- ipaddr = local_ip_address
139
- uptime = local_uptime
140
- rescue => ex
141
- # Be silent!
142
- end
143
-
144
- [hostname, ipaddr, uptime]
145
- end
146
-
147
- # local_hostname
148
- #
149
- # Return the hostname for the local machine
150
- def local_hostname
151
- Socket.gethostname
152
- end
153
-
154
- # local_uptime
155
- #
156
- # Returns the local uptime in hours. Use Win32API in Windows,
157
- # 'sysctl -b kern.boottime' os osx, and 'who -b' on unix.
158
- # Based on Ruby Quiz solutions by: Matthias Reitinger
159
- # On Windows, see also: net statistics server
160
- def local_uptime
161
-
162
- # Each method must return uptime in seconds
163
- methods = {
164
-
165
- :win32_windows => lambda {
166
- # Win32API is required in self.guess
167
- getTickCount = Win32API.new("kernel32", "GetTickCount", nil, 'L')
168
- ((getTickCount.call()).to_f / 1000).to_f
169
- },
170
-
171
- # Ya, this is kinda wack. Ruby -> Java -> Kernel32. See:
172
- # http://www.oreillynet.com/ruby/blog/2008/01/jruby_meets_the_windows_api_1.html
173
- # http://msdn.microsoft.com/en-us/library/ms724408(VS.85).aspx
174
- # Ruby 1.9.1: Win32API is now deprecated in favor of using the DL library.
175
- :java_windows => lambda {
176
- kernel32 = com.sun.jna.NativeLibrary.getInstance('kernel32')
177
- buf = java.nio.ByteBuffer.allocate(256)
178
- (kernel32.getFunction('GetTickCount').invokeInt([256, buf].to_java).to_f / 1000).to_f
179
- },
180
-
181
- :unix_osx => lambda {
182
- # This is faster than who and could work on BSD also.
183
- (Time.now.to_f - Time.at(`sysctl -b kern.boottime 2>/dev/null`.unpack('L').first).to_f).to_f
184
- },
185
- # This should work for most unix flavours.
186
- :unix => lambda {
187
- # who is sloooooow. Use File.read('/proc/uptime')
188
- (Time.now.to_f - Time.parse(`who -b 2>/dev/null`).to_f)
189
- }
190
- }
191
-
192
- hours = 0
193
-
194
- begin
195
- key = platform
196
- method = (methods.has_key? key) ? methods[key] : methods[:unix]
197
- hours = (method.call) / 3600 # seconds to hours
198
- rescue => ex
199
- end
200
- hours
201
- end
202
-
203
-
204
- #
205
- # Return the local IP address which receives external traffic
206
- # from: http://coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/
207
- # NOTE: This <em>does not</em> open a connection to the IP address.
208
- def local_ip_address
209
- # turn off reverse DNS resolution temporarily
210
- orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
211
- UDPSocket.open {|s| s.connect('75.101.137.7', 1); s.addr.last } # Solutious IP
212
- ensure
213
- Socket.do_not_reverse_lookup = orig
214
- end
215
-
216
- #
217
- # Returns the local IP address based on the hostname.
218
- # According to coderrr (see comments on blog link above), this implementation
219
- # doesn't guarantee that it will return the address for the interface external
220
- # traffic goes through. It's also possible the hostname isn't resolvable to the
221
- # local IP.
222
- def local_ip_address_alt
223
- ipaddr = :unknown
224
- begin
225
- saddr = Socket.getaddrinfo( Socket.gethostname, nil, Socket::AF_UNSPEC, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME)
226
- ipaddr = saddr.select{|type| type[0] == 'AF_INET' }[0][3]
227
- rescue => ex
228
- end
229
- ipaddr
230
- end
231
-
232
- # returns a symbol in the form: os_implementation. This is used throughout Stella
233
- # for platform specific support.
234
- def platform
235
- "#{@os}_#{@implementation}".to_sym
236
- end
237
-
238
- # Returns Ruby version as an array
239
- def ruby
240
- RUBY_VERSION.split('.').map { |v| v.to_i }
241
- end
242
-
243
- # Returns the environment PATH as an Array
244
- def paths
245
- if @os == :unix
246
- (ENV['PATH'] || '').split(':')
247
- elsif
248
- (ENV['PATH'] || '').split(';') # Note tested!
249
- else
250
- raise "paths not implemented for: #{@os}"
251
- end
252
- end
253
-
254
- def user
255
- ENV['USER']
256
- end
257
-
258
- def home
259
- if @os == :unix
260
- File.expand_path(ENV['HOME'])
261
- elsif @os == :win32
262
- File.expand_path(ENV['USERPROFILE'])
263
- else
264
- raise "paths not implemented for: #{@os}"
265
- end
266
- end
267
-
268
- def shell
269
- if @os == :unix
270
- (ENV['SHELL'] || 'bash').to_sym
271
- elsif @os == :win32
272
- :dos
273
- else
274
- raise "paths not implemented for: #{@os}"
275
- end
276
- end
277
-
278
- # Print friendly system information.
279
- def to_s
280
- sprintf("Hostname: %s#{$/}IP Address: %s#{$/}System: %s#{$/}Uptime: %.2f (hours)#{$/}Ruby: #{ruby.join('.')}",
281
- @hostname, @ipaddress, "#{@os}-#{@implementation}-#{@architecture}", @uptime)
282
- end
283
-
284
-
285
- end
@@ -1,33 +0,0 @@
1
-
2
- require 'ostruct'
3
-
4
- module Tryouts
5
-
6
- # tryout :name do
7
- # ...
8
- # end
9
- def tryout(name, &b)
10
- puts '-'*50
11
- puts "Running#{@poop}: #{name}"
12
- begin
13
- b.call
14
- sleep 0.1
15
- rescue Interrupt
16
- rescue => ex
17
- STDERR.puts "Tryout error: #{ex.message}"
18
- end
19
- puts $/*2
20
- end
21
-
22
- # Ignore everything
23
- def xtryout(name, &b)
24
- end
25
-
26
- # Is this wacky syntax useful for anything?
27
- # t2 :set .
28
- # run = "poop"
29
- def t2(*args)
30
- OpenStruct.new
31
- end
32
-
33
- end
@@ -1,222 +0,0 @@
1
- = Change Log
2
-
3
- Below is a complete listing of changes for each revision of HighLine.
4
-
5
- == 1.5.1
6
-
7
- * Fixed the long standing echo true bug.
8
- (reported by Lauri Tuominen)
9
- * Improved Windows API calls to support the redirection of STDIN.
10
- (patch by Aaron Simmons)
11
- * Updated gem specification to avoid a deprecated call.
12
- * Made a minor documentation clarification about character mode support.
13
- * Worked around some API changes in Ruby's standard library in Ruby 1.9.
14
- (patch by Jake Benilov)
15
-
16
- == 1.5.0
17
-
18
- * Fixed a bug that would prevent Readline from showing all completions.
19
- (reported by Yaohan Chen)
20
- * Added the ability to pass a block to HighLine#agree().
21
- (patch by Yaohan Chen)
22
-
23
- == 1.4.0
24
-
25
- * Made the code grabbing terminal size a little more cross-platform by
26
- adding support for Solaris. (patch by Ronald Braswell and Coey Minear)
27
-
28
- == 1.2.9
29
-
30
- * Additional work on the backspacing issue. (patch by Jeremy Hinegardner)
31
- * Fixed Readline prompt bug. (patch by Jeremy Hinegardner)
32
-
33
- == 1.2.8
34
-
35
- * Fixed backspacing past the prompt and interrupting a prompt bugs.
36
- (patch by Jeremy Hinegardner)
37
-
38
- == 1.2.7
39
-
40
- * Fixed the stty indent bug.
41
- * Fixed the echo backspace bug.
42
- * Added HighLine::track_eof=() setting to work are threaded eof?() calls.
43
-
44
- == 1.2.6
45
-
46
- Patch by Jeremy Hinegardner:
47
-
48
- * Added ColorScheme support.
49
- * Added HighLine::Question.overwrite mode.
50
- * Various documentation fixes.
51
-
52
- == 1.2.5
53
-
54
- * Really fixed the bug I tried to fix in 1.2.4.
55
-
56
- == 1.2.4
57
-
58
- * Fixed a crash causing bug when using menus, reported by Patrick Hof.
59
-
60
- == 1.2.3
61
-
62
- * Treat Cygwin like a Posix OS, instead of a native Windows environment.
63
-
64
- == 1.2.2
65
-
66
- * Minor documentation corrections.
67
- * Applied Thomas Werschleiln's patch to fix termio buffering on Solaris.
68
- * Applied Justin Bailey's patch to allow canceling paged output.
69
- * Fixed a documentation bug in the description of character case settings.
70
- * Added a notice about termios in HighLine::Question#echo.
71
- * Finally working around the infamous "fast typing" bug
72
-
73
- == 1.2.1
74
-
75
- * Applied Justin Bailey's fix for the page_print() infinite loop bug.
76
- * Made a SystemExtensions module to expose OS level functionality other
77
- libraries may want to access.
78
- * Publicly exposed the get_character() method, per user requests.
79
- * Added terminal_size(), output_cols(), and output_rows() methods.
80
- * Added :auto setting for warp_at=() and page_at=().
81
-
82
- == 1.2.0
83
-
84
- * Improved RubyForge and gem spec project descriptions.
85
- * Added basic examples to README.
86
- * Added a VERSION constant.
87
- * Added support for hidden menu commands.
88
- * Added Object.or_ask() when using highline/import.
89
-
90
- == 1.0.4
91
-
92
- * Moved the HighLine project to Subversion.
93
- * HighLine's color escapes can now be disabled.
94
- * Fixed EOF bug introduced in the last release.
95
- * Updated HighLine web page.
96
- * Moved to a forked development/stable version numbering.
97
-
98
- == 1.0.2
99
-
100
- * Removed old and broken help tests.
101
- * Fixed test case typo found by David A. Black.
102
- * Added ERb escapes processing to lists, for coloring list items. Color escapes
103
- do not add to list element size.
104
- * HighLine now throws EOFError when input is exhausted.
105
-
106
- == 1.0.1
107
-
108
- * Minor bug fix: Moved help initialization to before response building, so help
109
- would show up in the default responses.
110
-
111
- == 1.0.0
112
-
113
- * Fixed documentation typo pointed out by Gavin Kistner.
114
- * Added <tt>gather = ...</tt> option to question for fetching entire Arrays or
115
- Hashes filled with answers. You can set +gather+ to a count of answers to
116
- collect, a String or Regexp matching the end of input, or a Hash where each
117
- key can be used in a new question.
118
- * Added File support to HighLine.ask(). You can specify a _directory_ and a
119
- _glob_ pattern that combine into a list of file choices the user can select
120
- from. You can choose to receive the user's answer as an open filehandle or as
121
- a Pathname object.
122
- * Added Readline support for history and editing.
123
- * Added tab completion for menu and file selection selection (requires
124
- Readline).
125
- * Added an optional character limit for input.
126
- * Added a complete help system to HighLine's shell menu creation tools.
127
-
128
- == 0.6.1
129
-
130
- * Removed termios dependancy in gem, to fix Windows' install.
131
-
132
- == 0.6.0
133
-
134
- * Implemented HighLine.choose() for menu handling.
135
- * Provided shortcut <tt>choose(item1, item2, ...)</tt> for simple menus.
136
- * Allowed Ruby code to be attached to each menu item, to create a complete
137
- menu solution.
138
- * Provided for total customization of the menu layout.
139
- * Allowed for menu selection by index, name or both.
140
- * Added a _shell_ mode to allow menu selection with additional details
141
- following the name.
142
- * Added a list() utility method that can be invoked just like color(). It can
143
- layout Arrays for you in any output in the modes <tt>:columns_across</tt>,
144
- <tt>:columns_down</tt>, <tt>:inline</tt> and <tt>:rows</tt>
145
- * Added support for <tt>echo = "*"</tt> style settings. User code can now
146
- choose the echo character this way.
147
- * Modified HighLine to user the "termios" library for character input, if
148
- available. Will return to old behavior (using "stty"), if "termios" cannot be
149
- loaded.
150
- * Improved "stty" state restoring code.
151
- * Fixed "stty" code to handle interrupt signals.
152
- * Improved the default auto-complete error message and exposed this message
153
- through the +responses+ interface as <tt>:no_completion</tt>.
154
-
155
- == 0.5.0
156
-
157
- * Implemented <tt>echo = false</tt> for HighLine::Question objects, primarily to
158
- make fetching passwords trivial.
159
- * Fixed an auto-complete bug that could cause a crash when the user gave an
160
- answer that didn't complete to any valid choice.
161
- * Implemented +case+ for HighLine::Question objects to provide character case
162
- conversions on given answers. Can be set to <tt>:up</tt>, <tt>:down</tt>, or
163
- <tt>:capitalize</tt>.
164
- * Exposed <tt>@answer</tt> to the response system, to allow response that are
165
- aware of incorrect input.
166
- * Implemented +confirm+ for HighLine::Question objects to allow for verification
167
- for sensitive user choices. If set to +true+, user will have to answer an
168
- "Are you sure? " question. Can also be set to the question to confirm with
169
- the user.
170
-
171
- == 0.4.0
172
-
173
- * Added <tt>@wrap_at</tt> and <tt>@page_at</tt> settings and accessors to
174
- HighLine, to control text flow.
175
- * Implemented line wrapping with adjustable limit.
176
- * Implemented paged printing with adjustable limit.
177
-
178
- == 0.3.0
179
-
180
- * Added support for installing with setup.rb.
181
- * All output is now treated as an ERb sequence, allowing Ruby code to be
182
- embedded in output strings.
183
- * Added support for ANSI color sequences in say(). (And everything else
184
- by extension.)
185
- * Added whitespace handling for answers. Can be set to <tt>:strip</tt>,
186
- <tt>:chomp</tt>, <tt>:collapse</tt>, <tt>:strip_and_collapse</tt>,
187
- <tt>:chomp_and_collapse</tt>, <tt>:remove</tt>, or <tt>:none</tt>.
188
- * Exposed question details to ERb completion through @question, to allow for
189
- intelligent responses.
190
- * Simplified HighLine internals using @question.
191
- * Added support for fetching single character input either with getc() or
192
- HighLine's own cross-platform terminal input routine.
193
- * Improved type conversion to handle user defined classes.
194
-
195
- == 0.2.0
196
-
197
- * Added Unit Tests to cover an already fixed output bug in the future.
198
- * Added Rakefile and setup test action (default).
199
- * Renamed HighLine::Answer to HighLine::Question to better illustrate its role.
200
- * Renamed fetch_line() to get_response() to better define its goal.
201
- * Simplified explain_error in terms of the Question object.
202
- * Renamed accept?() to in_range?() to better define purpose.
203
- * Reworked valid?() into valid_answer?() to better fit Question object.
204
- * Reworked <tt>@member</tt> into <tt>@in</tt>, to make it easier to remember and
205
- switched implementation to include?().
206
- * Added range checks for @above and @below.
207
- * Fixed the bug causing ask() to swallow NoMethodErrors.
208
- * Rolled ask_on_error() into responses.
209
- * Redirected imports to Kernel from Object.
210
- * Added support for <tt>validate = lambda { ... }</tt>.
211
- * Added default answer support.
212
- * Fixed bug that caused ask() to die with an empty question.
213
- * Added complete documentation.
214
- * Improve the implemetation of agree() to be the intended "yes" or "no" only
215
- question.
216
- * Added Rake tasks for documentation and packaging.
217
- * Moved project to RubyForge.
218
-
219
- == 0.1.0
220
-
221
- * Initial release as the solution to
222
- {Ruby Quiz #29}[http://www.rubyquiz.com/quiz29.html].