garcun 0.0.2 → 0.0.3

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/lib/garcon/chef/chef_helpers.rb +9 -12
  3. data/lib/garcon/chef/coerce/coercer.rb +3 -0
  4. data/lib/garcon/chef/node.rb +7 -5
  5. data/lib/garcon/chef/provider/download.rb +2 -30
  6. data/lib/garcon/chef/resource/base_dsl.rb +53 -0
  7. data/lib/garcon/chef/secret_bag.rb +2 -1
  8. data/lib/garcon/chef_inclusions.rb +1 -9
  9. data/lib/garcon/core_ext/array.rb +1 -1
  10. data/lib/garcon/core_ext/binding.rb +0 -1
  11. data/lib/garcon/core_ext/boolean.rb +2 -0
  12. data/lib/garcon/core_ext/hash.rb +1 -2
  13. data/lib/garcon/core_ext/kernel.rb +0 -2
  14. data/lib/garcon/core_ext/module.rb +0 -1
  15. data/lib/garcon/core_ext/object.rb +0 -3
  16. data/lib/garcon/core_ext/string.rb +9 -15
  17. data/lib/garcon/core_ext/struct.rb +0 -1
  18. data/lib/garcon/core_ext/symbol.rb +0 -1
  19. data/lib/garcon/core_ext/time.rb +0 -1
  20. data/lib/garcon/core_ext.rb +0 -4
  21. data/lib/garcon/exceptions.rb +0 -35
  22. data/lib/garcon/task/executor.rb +0 -1
  23. data/lib/garcon/task/ivar.rb +0 -2
  24. data/lib/garcon/utility/file_helper.rb +88 -1
  25. data/lib/garcon/utility/retry.rb +0 -3
  26. data/lib/garcon/utility/timeout.rb +0 -3
  27. data/lib/garcon/utils.rb +0 -1
  28. data/lib/garcon/version.rb +1 -1
  29. data/lib/garcon.rb +1 -4
  30. data/lib/garcun.rb +1 -3
  31. metadata +2 -11
  32. data/lib/garcon/chef/handler/devreporter.rb +0 -127
  33. data/lib/garcon/chef/resource/resource_name.rb +0 -109
  34. data/lib/garcon/core_ext/file.rb +0 -127
  35. data/lib/garcon/core_ext/filetest.rb +0 -62
  36. data/lib/garcon/core_ext/lazy.rb +0 -222
  37. data/lib/garcon/core_ext/process.rb +0 -41
  38. data/lib/garcon/utility/ansi.rb +0 -199
  39. data/lib/garcon/utility/equalizer.rb +0 -146
  40. data/lib/garcon/utility/msg_from_god.rb +0 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e5afab358904c0ff67603201613bb8b3e4518cb
4
- data.tar.gz: b82642cbea4924320bf4ff2cccded02a132e0b9a
3
+ metadata.gz: 2827b045552795cc5a3934823fc34bc6d7c3b1bf
4
+ data.tar.gz: bf3026b6fdd4ca118e727db751c39f256a66dcae
5
5
  SHA512:
6
- metadata.gz: bc86987f93098617d324810d97cae447b5163fbfc0babf758a319f84f8fb87053654a88baaedf009aaf8ca25ca012452087900ee4575c5387893127992b16d82
7
- data.tar.gz: 8e01b6ca679fe8a33b036f87e0043e25ba19ef5282e6d91d12a536f37c0587d4162751aad8f2f4398f2e7ee70577d1759bc8d93c1fac70a07b501b9c72267d2c
6
+ metadata.gz: 3858d4a7601ff6afbc09a4a6c1765bad36cccf0c6c9b0ed39e52c098fcf4fceb465172dd49ce54c0249bdce98ff8877fbe4215a971337690fd9b2fe27c7e44f4
7
+ data.tar.gz: 0bfd59282111449b3c6dfffff1fb696b9711f2f30bb16c5759a4bcd0ab23a77788f9b3350feed5ba675bb80d9492ecdb9b60692ba5ac5aee6ce74070a93dd944
@@ -25,19 +25,16 @@ module Garcon
25
25
  extend self
26
26
 
27
27
  include Chef::Mixin::ShellOut
28
- include Garcon::Exceptions
29
28
 
30
- # def chef_run_context
31
- # ::Chef::RunContext.new(chef_node, nil, nil)
32
- # end
33
- #
34
- # TODO - ARE THESE CAUSING TROUBLE???
35
- #
36
- # def chef_node
37
- # node = ::Chef::Node.new
38
- # node.consume_external_attrs(nil, ohai)
39
- # node
40
- # end
29
+ def chef_run_context
30
+ ::Chef::RunContext.new(chef_node, nil, nil)
31
+ end
32
+
33
+ def chef_node
34
+ node = ::Chef::Node.new
35
+ node.consume_external_attrs(nil, ohai)
36
+ node
37
+ end
41
38
 
42
39
  # Boolean indicating if the given Ruby Gem is installed.
43
40
  #
@@ -30,6 +30,8 @@ module Garcon
30
30
  end
31
31
 
32
32
  class Coercer
33
+ # Coerces objects based on the definitions that are registered.
34
+ #
33
35
  def initialize
34
36
  @coercions = Hash.new do |hash, origin|
35
37
  hash[origin] = Hash.new do |h, target|
@@ -101,6 +103,7 @@ module Garcon
101
103
  # Calls the coercion.
102
104
  #
103
105
  # @return [Object]
106
+ #
104
107
  def call(object)
105
108
  @block.call(object, @target)
106
109
  end
@@ -55,20 +55,22 @@ class Chef
55
55
  # not exist, otherwise UndefinedAttributeError is raised.
56
56
  #
57
57
  # @param [Array<String, Symbol>] keys
58
- # the list of keys to kdeep fetch
58
+ # The list of keys to kdeep fetch
59
59
  #
60
60
  # @yield optional block to execute if no value is found
61
61
  #
62
+ # @raise UndefinedAttributeError
63
+ #
62
64
  # @return [Object]
63
65
  #
64
66
  # @api public
65
67
  def get(*keys, &block)
66
- args.reduce(self) do |obj, arg|
68
+ keys.reduce(self) do |obj, key|
67
69
  begin
68
- arg = Integer(arg) if obj.is_a? Array
69
- obj.fetch(arg)
70
+ key = Integer(key) if obj.is_a? Array
71
+ obj.fetch(key)
70
72
  rescue ArgumentError, IndexError, NoMethodError
71
- break block.call(arg) if block
73
+ break block.call(key) if block
72
74
  raise UndefinedAttributeError
73
75
  end
74
76
  end
@@ -227,34 +227,6 @@ class Chef
227
227
 
228
228
  private # P R O P R I E T À P R I V A T A Vietato L'accesso
229
229
 
230
- # Handle the download action.
231
- #
232
- # @return [undefined]
233
- #
234
- # @api private
235
- def do_create
236
- if @current_resource.exist? && !access_controls.requires_changes?
237
- Chef::Log.debug "#{r.path} already exists - nothing to do"
238
-
239
- elsif @current_resource.exist? && access_controls.requires_changes?
240
- converge_by(access_controls.describe_changes) do
241
- access_controls.set_all
242
- end
243
- r.updated_by_last_action(true)
244
-
245
- else
246
- converge_by "Download #{r.path}" do
247
- backup unless ::File.symlink?(r.path)
248
- do_download
249
- end
250
- do_acl_changes
251
- load_resource_attributes_from_file(r)
252
- r.updated_by_last_action(true)
253
- load_new_resource_state
254
- r.exist = true
255
- end
256
- end
257
-
258
230
  # Change file ownership and mode.
259
231
  #
260
232
  # @return [undefined]
@@ -331,9 +303,9 @@ class Chef
331
303
 
332
304
  def handle_prerequisites
333
305
  package 'gnutls', :install
334
- yumrepo :create
306
+ yumrepo(:create) if node.platform_family == 'rhel'
335
307
  package 'aria2', :install
336
- wipe_repo
308
+ wipe_repo if node.platform_family == 'rhel'
337
309
  end
338
310
 
339
311
  def package(name, action = :nothing)
@@ -25,6 +25,54 @@ module Garcon
25
25
  #
26
26
  module BaseDSL
27
27
  module ClassMethods
28
+ # Maps a resource/provider (and optionally a platform and version) to a
29
+ # Chef resource/provider. This allows finer grained per platform
30
+ # resource attributes and the end of overloaded resource definitions.
31
+ #
32
+ # @note
33
+ # The provides method must be defined in both the custom resource and
34
+ # custom provider files and both files must have identical provides
35
+ # statement(s).
36
+ #
37
+ # @param [Symbol] name
38
+ # Name of a Chef resource/provider to map to.
39
+ #
40
+ # @return [undefined]
41
+ #
42
+ def provides(name)
43
+ if self.name && respond_to?(:constantize)
44
+ old_constantize = instance_method(:constantize)
45
+ define_singleton_method(:constantize) do |name|
46
+ name == self.name ? self : old_constantize.bind(self).call(name)
47
+ end
48
+ end
49
+ @provides_name = name
50
+ super if defined?(super)
51
+ end
52
+
53
+ # Return the Snake case name of the current resource class. If not set
54
+ # explicitly it will be introspected based on the class name.
55
+ #
56
+ # @param [Boolean] auto
57
+ # Try to auto-detect based on class name.
58
+ #
59
+ # @return [Symbol]
60
+ #
61
+ def resource_name(auto = true)
62
+ return @provides_name if @provides_name
63
+ @provides_name || if name && name.start_with?('Chef::Resource')
64
+ Garcon::Inflections.snakeify(name, 'Chef::Resource').to_sym
65
+ elsif name
66
+ Garcon::Inflections.snakeify(name.split('::').last).to_sym
67
+ end
68
+ end
69
+
70
+ # Used by Resource#to_text to find the human name for the resource.
71
+ #
72
+ def dsl_name
73
+ resource_name.to_s
74
+ end
75
+
28
76
  # Imitate the behavior of the `Chef::Resource::LWRPBase` DSL providing
29
77
  # a `default_action` method.
30
78
  #
@@ -134,6 +182,11 @@ module Garcon
134
182
  #
135
183
  def initialize(*args)
136
184
  super
185
+ if self.class.resource_name(false)
186
+ @resource_name = self.class.resource_name
187
+ else
188
+ @resource_name ||= self.class.resource_name
189
+ end
137
190
  @action = self.class.default_action if @action == :nothing
138
191
  (@allowed_actions << self.class.actions).flatten!.uniq!
139
192
  end
@@ -45,7 +45,8 @@ module Garcon
45
45
  # The mysql_passwd will == 'eazypass'
46
46
  #
47
47
  module SecretBag
48
- include Garcon::Exceptions
48
+ InvalidDataBagTypeError = Class.new(RuntimeError)
49
+ DataBagEncryptionError = Class.new(RuntimeError)
49
50
 
50
51
  def secret(bag_name, index)
51
52
  if node[:garcon][:devmode]
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  require_relative 'chef/chef_helpers'
21
- require_relative 'chef/log'
22
21
  require_relative 'chef/node'
23
22
  require_relative 'chef/secret_bag'
24
23
  require_relative 'chef/validations'
@@ -27,7 +26,6 @@ require_relative 'chef/resource/attribute'
27
26
  require_relative 'chef/resource/base_dsl'
28
27
  require_relative 'chef/resource/blender'
29
28
  require_relative 'chef/resource/lazy_eval'
30
- require_relative 'chef/resource/resource_name'
31
29
 
32
30
  module Garcon
33
31
  # Extend Resource with class and instance methods.
@@ -36,7 +34,6 @@ module Garcon
36
34
  include BaseDSL
37
35
  include LazyEval
38
36
  include Validations
39
- include ResourceName
40
37
  include Garcon::UrlHelper
41
38
  include Garcon::FileHelper
42
39
 
@@ -138,14 +135,9 @@ unless Chef::Recipe.ancestors.include?(Garcon::Interpolation)
138
135
  Chef::Provider.send(:include, Garcon::Interpolation)
139
136
  end
140
137
 
141
- unless Chef::Resource.method_defined?(:run_now)
142
- Chef::Resource.send(:include, Garcon::RunNow::Mixin)
143
- end
144
-
145
138
  require_relative 'chef/provider/civilize'
139
+ require_relative 'chef/provider/development'
146
140
  require_relative 'chef/provider/download'
147
141
  require_relative 'chef/provider/house_keeping'
148
142
  require_relative 'chef/provider/node_cache'
149
- require_relative 'chef/provider/partial'
150
- require_relative 'chef/provider/recovery'
151
143
  require_relative 'chef/provider/zip_file'
@@ -21,7 +21,7 @@ class Array
21
21
  # Get or set state of object. You can think of #object_state as an in-code
22
22
  # form of marshalling.
23
23
  #
24
- def object_state(data=nil)
24
+ def object_state(data = nil)
25
25
  data ? replace(data) : dup
26
26
  end
27
27
  end
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  class Binding
21
-
22
21
  # Returns the call stack, same format as Kernel#caller()
23
22
  #
24
23
  def caller( skip=0 )
@@ -18,6 +18,7 @@
18
18
  #
19
19
 
20
20
  # Add #blank? method to TrueClass class.
21
+ #
21
22
  class TrueClass
22
23
  # True is never blank.
23
24
  #
@@ -42,6 +43,7 @@ class TrueClass
42
43
  end
43
44
 
44
45
  # Add #blank? method to FalseClass class.
46
+ #
45
47
  class FalseClass
46
48
  # False is always blank.
47
49
  #
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  class Hash
21
-
22
21
  # Turn a hash into a method arguments.
23
22
  #
24
23
  # h = { :list => [1,2], :base => "HI" }
@@ -55,7 +54,7 @@ class Hash
55
54
  # Get or set state of object. You can think of #object_state as an in-code
56
55
  # form of marshalling.
57
56
  #
58
- def object_state(data=nil)
57
+ def object_state(data = nil)
59
58
  data ? replace(data) : dup
60
59
  end
61
60
 
@@ -17,9 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- # Add #maybe
21
20
  module Kernel
22
-
23
21
  # Random generator that returns true or false. Can also take a block that has
24
22
  # a 50/50 chance to being executed.
25
23
  #
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  class Module
21
-
22
21
  # Create an instance of Object and extend it with +self+.
23
22
  #
24
23
  # mod = Module.new do
@@ -17,10 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
-
21
- # Add #blank?, #present?, #try and #try! methods to Object class.
22
20
  class Object
23
-
24
21
  # Returns true if the object is nil or empty (if applicable)
25
22
  #
26
23
  # @example
@@ -17,21 +17,18 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- # Adds `#contains?`, `#blank?` and `#shatter` methods to strings
21
- #
22
20
  class String
23
-
24
21
  # Get or set state of object. You can think of #object_state as an in-code
25
22
  # form of marshalling.
26
23
  #
27
- def object_state(data=nil)
24
+ def object_state(data = nil)
28
25
  data ? replace(data) : dup
29
26
  end
30
27
 
31
- # Common Unix cryptography method.
32
- # This adds a default salt to the built-in crypt method.
28
+ # Common Unix cryptography method. This adds a default salt to the built-in
29
+ # crypt method.
33
30
  #
34
- def crypt(salt=nil)
31
+ def crypt(salt = nil)
35
32
  salt ||= ((SecureRandom.random_number(26) +
36
33
  (SecureRandom.random_number(2) == 0 ? 65 : 97)).chr +
37
34
  (SecureRandom.random_number(26) +
@@ -56,7 +53,7 @@ class String
56
53
  #
57
54
  # "a?".to_re #=> /a?/
58
55
  #
59
- def to_re(esc=false)
56
+ def to_re(esc = false)
60
57
  Regexp.new((esc ? Regexp.escape(self) : self))
61
58
  end
62
59
 
@@ -66,21 +63,18 @@ class String
66
63
  #
67
64
  # "[".to_rx #=> /\[/
68
65
  #
69
- def to_rx(esc=true)
66
+ def to_rx(esc = true)
70
67
  Regexp.new((esc ? Regexp.escape(self) : self))
71
68
  end
72
69
 
73
70
  # Strips out whitespace then tests if the string is empty.
74
71
  #
75
- # @example
76
- # "".blank? # => true
77
- # " ".blank? # => true
78
- # " sup? ".blank? # => false
72
+ # "".blank? #=> true
73
+ # " ".blank? #=> true
74
+ # " hey ho ".blank? #=> false
79
75
  #
80
76
  # @return [Boolean]
81
- # True if blank, else false.
82
77
  #
83
- # @api public
84
78
  def blank?
85
79
  strip.empty?
86
80
  end
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  class Struct
21
-
22
21
  # Get or set state of object. You can think of #object_state as an in-code
23
22
  # form of marshalling.
24
23
  #
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  class Symbol
21
-
22
21
  # Override this in a child if it cannot be dup'ed
23
22
  #
24
23
  # @return [Object]
@@ -17,7 +17,6 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- # Add #elapse
21
20
  class Time
22
21
  # Tracks the elapse time of a code block.
23
22
  #
@@ -21,17 +21,13 @@ require_relative 'core_ext/array'
21
21
  require_relative 'core_ext/binding'
22
22
  require_relative 'core_ext/boolean'
23
23
  require_relative 'core_ext/enumerable'
24
- require_relative 'core_ext/file'
25
- require_relative 'core_ext/filetest'
26
24
  require_relative 'core_ext/hash'
27
25
  require_relative 'core_ext/kernel'
28
- require_relative 'core_ext/lazy'
29
26
  require_relative 'core_ext/method_access'
30
27
  require_relative 'core_ext/nil'
31
28
  require_relative 'core_ext/numeric'
32
29
  require_relative 'core_ext/object'
33
30
  require_relative 'core_ext/pathname'
34
- require_relative 'core_ext/process'
35
31
  require_relative 'core_ext/random'
36
32
  require_relative 'core_ext/string'
37
33
  require_relative 'core_ext/struct'
@@ -62,40 +62,5 @@ module Garcon
62
62
  end
63
63
  end
64
64
  end
65
-
66
- # Raised when errors occur during configuration.
67
- ConfigurationError = Class.new(StandardError)
68
-
69
- # Raised when an object's methods are called when it has not been
70
- # properly initialized.
71
- InitializationError = Class.new(StandardError)
72
-
73
- # If the maximum number of ReadWriteLock readers or writers is exceeded.
74
- ResourceLimitError = Class.new(StandardError)
75
-
76
- # Raised by an `Executor` when it is unable to process a given task,
77
- # possibly because of a reject policy or other internal error.
78
- RejectedExecutionError = Class.new(StandardError)
79
-
80
- # Raised when an operation times out.
81
- TimeoutError = Class.new(StandardError)
82
- PollingError = Class.new(StandardError)
83
-
84
- # Raised when node[:garcon][:databag_type] is not valid.
85
- InvalidDataBagTypeError = Class.new(RuntimeError)
86
-
87
- # Raised when cipher direction is invalid.
88
- InvalidCipherError = Class.new(RuntimeError)
89
-
90
- # Raised when no encryption key password is specified.
91
- MissingEncryptionPasswordError = Class.new(RuntimeError)
92
-
93
- ResourceNotFoundError = Class.new(RuntimeError)
94
- InvalidStateError = Class.new(RuntimeError)
95
- InvalidTransitionError = Class.new(RuntimeError)
96
- InvalidCallbackError = Class.new(RuntimeError)
97
- TransitionFailedError = Class.new(RuntimeError)
98
- TransitionConflictError = Class.new(RuntimeError)
99
- GuardFailedError = Class.new(RuntimeError)
100
65
  end
101
66
  end
@@ -17,7 +17,6 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require_relative '../exceptions'
21
20
  require_relative 'event'
22
21
 
23
22
  module Garcon
@@ -18,8 +18,6 @@
18
18
  #
19
19
 
20
20
  require 'thread'
21
-
22
- require_relative '../exceptions'
23
21
  require_relative 'obligation'
24
22
  require_relative 'observable'
25
23
 
@@ -17,6 +17,10 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
+ require 'thread'
21
+ require 'tempfile'
22
+ require 'fileutils'
23
+
20
24
  module Garcon
21
25
  # Class methods that are added when you include Garcon
22
26
  #
@@ -93,7 +97,7 @@ module Garcon
93
97
  end
94
98
  end
95
99
  end
96
-
100
+
97
101
  dirs.empty? ? nil : dirs
98
102
  end
99
103
 
@@ -166,5 +170,88 @@ module Garcon
166
170
  def normalize_path(path)
167
171
  path.sub(%r{^/}, '').tr('', '')
168
172
  end
173
+
174
+ def atomic_id
175
+ @atomic_id ||= 0
176
+ @atomic_id += 1
177
+ end
178
+
179
+ # Same as `File.open`, but acts on a temporary copy of named
180
+ # file, copying the file back to the original on completion.
181
+ #
182
+ # @uncommon
183
+ # require 'facets/fileutils/atomic_open'
184
+ #
185
+ def atomic_open(file, mode='r', temp_dir = nil, &block)
186
+ temp_dir = temp_dir || Dir.tmpdir
187
+ temp_file = Tempfile.new("#{aomtic_id}-" + File.basename(file), temp_dir)
188
+ FileUtils.cp(file, temp_file) if File.exist?(file)
189
+ File.open(temp_file, mode, &block)
190
+ FileUtils.cp(temp_file, file)
191
+ end
192
+
193
+ # Write to a file atomically. Useful for situations where you don't
194
+ # want other processes or threads to see half-written files.
195
+ #
196
+ # File.atomic_write("important.txt") do |file|
197
+ # file.write("hello")
198
+ # end
199
+ #
200
+ # If your temporary directory is not on the same filesystem as the file
201
+ # you're trying to write, you can provide a different temporary directory.
202
+ #
203
+ # File.atomic_write("important.txt", "tmp") do |file|
204
+ # file.write("hello")
205
+ # end
206
+ #
207
+ def atomic_write(file, temp_dir = nil)
208
+ temp_dir = temp_dir || Dir.tmpdir
209
+ temp_file = Tempfile.new(File.basename(file), temp_dir)
210
+
211
+ yield temp_file
212
+ temp_file.close
213
+
214
+ begin
215
+ old_stat = File.stat(file)
216
+ rescue Errno::ENOENT
217
+ ext = "#{Thread.current.object_id}.#{Process.pid}.#{rand(1000000)}"
218
+ check_name = File.join(File.dirname(file), ".permissions_check.#{ext}")
219
+ File.open(check_name, "w") { }
220
+ old_stat = File.stat(check_name)
221
+ File.unlink(check_name)
222
+ end
223
+
224
+ FileUtils.mv(temp_file.path, file)
225
+ File.chown(old_stat.uid, old_stat.gid, file)
226
+ File.chmod(old_stat.mode, file)
227
+ end
228
+
229
+ # Reads in a file, removes blank lines and removes lines starting
230
+ # with '#' and then returns an array of all the remaining lines.
231
+ #
232
+ # Thr remark indicator can be overridden via the +:omit:+ option, which
233
+ # can be a regualar expression or a string that is match against the
234
+ # start of a line.
235
+ #
236
+ def read_list(filepath, options={})
237
+ chomp = options[:chomp]
238
+ omit = case options[:omit]
239
+ when Regexp
240
+ omit
241
+ when nil
242
+ /^\s*\#/
243
+ else
244
+ /^\s*#{Regexp.escape(omit)}/
245
+ end
246
+
247
+ list = []
248
+ readlines(filepath).each do |line|
249
+ line = line.strip.chomp(chomp)
250
+ next if line.empty?
251
+ next if omit === line
252
+ list << line
253
+ end
254
+ list
255
+ end
169
256
  end
170
257
  end
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  require_relative 'timeout'
21
- require_relative '../exceptions'
22
21
 
23
22
  module Garcon
24
23
  # Class methods that are added when you include Garcon::Retry
@@ -27,8 +26,6 @@ module Garcon
27
26
  # Methods are also available as module-level methods as well as a mixin.
28
27
  extend self
29
28
 
30
- include Garcon::Exceptions
31
-
32
29
  # Runs a code block, and retries it when an exception occurs. It is
33
30
  # configured using four optional parameters `:tries`, `:on`, `:sleep`,
34
31
  # `:match`, `:ensure` and runs the passed block. Should an exception
@@ -18,7 +18,6 @@
18
18
  #
19
19
 
20
20
  require 'thread'
21
- require_relative '../exceptions'
22
21
 
23
22
  module Garcon
24
23
  # Class methods that are added when you include Garcon::Timeout
@@ -27,8 +26,6 @@ module Garcon
27
26
  # Methods are also available as module-level methods as well as a mixin.
28
27
  extend self
29
28
 
30
- include Garcon::Exceptions
31
-
32
29
  # Wait the given number of seconds for the block operation to complete.
33
30
  # Intended to be a simpler and more reliable replacement to the Ruby
34
31
  # standard library `Timeout::timeout` method.
data/lib/garcon/utils.rb CHANGED
@@ -23,7 +23,6 @@ require_relative 'utility/file_helper'
23
23
  require_relative 'utility/hookers'
24
24
  require_relative 'utility/interpolation'
25
25
  require_relative 'utility/memstash'
26
- require_relative 'utility/msg_from_god'
27
26
  require_relative 'utility/retry'
28
27
  require_relative 'utility/timeout'
29
28
  require_relative 'utility/url_helper'
@@ -27,7 +27,7 @@ module Garcon
27
27
  module Version
28
28
  MAJOR = 0
29
29
  MINOR = 0
30
- PATCH = 2
30
+ PATCH = 3
31
31
 
32
32
  # Returns a version string by joining MAJOR, MINOR, and PATCH with '.'
33
33
  #