named_return 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f252510b6986e02f0ef431ca08b045c722092bc
4
- data.tar.gz: 91bf016d226be3a6ff5221212835c9e62fc39b1a
3
+ metadata.gz: f6f0e72a7eaef30e12c8bc5abfc11339f2732646
4
+ data.tar.gz: 190650a389ecfdedb126730708d1092bcb4fb774
5
5
  SHA512:
6
- metadata.gz: ac5b138b9d6bb2e5f8e62348367273279a13ca3dbe89cc5defa8bd05577642a171be5bf33677950d18ceee9ee0f88f980d7165da04b741102f51366a36ccde88
7
- data.tar.gz: 70659daf030d1dbec058b62d713cf5ed2e77ca2c0335c676c76af6c6f914f6d5f2fd500275a6f3b47ca1224fe9705763a8372a807eecf8c9182d0556c3a8396a
6
+ metadata.gz: b2f2ce6f93c641021bdadc3f9f6315c9fcc11a00599707d02d3e58e5cf5d72e33fecbf8765debd17f6c6f77fe6f709b620ee9785c54eb2984ba3b4f96fd50923
7
+ data.tar.gz: a904a67f9deff795abf69b863fb8c895fafa7d9eee9db054d5e3404a343c3a3cc83721854a39e3fbb2f4b1944700faa54ba2e064e6ebdc60e0098ef0ff47be5a
data/README.md CHANGED
@@ -24,6 +24,10 @@ Or install it yourself as:
24
24
 
25
25
  TODO: Write usage instructions here
26
26
 
27
+ ## Thread Safety
28
+
29
+ I've used this in an app that called methods simultaneously and [it blew up but then I fixed it so] it works, thus as far as I know it's threadsafe, yay!
30
+
27
31
  ## Development
28
32
 
29
33
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -32,7 +36,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
36
 
33
37
  ## Contributing
34
38
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/named_return.
39
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sfcgeorge/named_return.
36
40
 
37
41
 
38
42
  ## License
@@ -15,17 +15,18 @@ module NamedReturn
15
15
  return unless @wrap_method == true # not just truthy, true for reals
16
16
 
17
17
  @wrap_method = :overriding # this prevents infinite loops :P
18
- wrapped_method = WrappedMethod.new meth, config
19
- override_method(obj, wrapped_method, singleton)
18
+ override_method(obj, meth, singleton)
20
19
  @wrap_method = nil
21
20
  end
22
21
 
23
22
  private
24
23
 
25
- def override_method(obj, wrapped, singleton)
24
+ def override_method(obj, meth, singleton)
26
25
  base = self
27
- obj.send(:"define#{singleton}_method", wrapped.name) do |*args, &block|
28
- wrapped.reset(self)
26
+ config = self.config
27
+ obj.send(:"define#{singleton}_method", meth.name) do |*args, &block|
28
+ # WrappedMethod.new needs to be here for thread safety
29
+ wrapped = WrappedMethod.new(meth, config, self)
29
30
  # skip the magic if test mode is on
30
31
  return wrapped.call_original(*args, &block) if base.config.test
31
32
 
@@ -1,3 +1,3 @@
1
1
  module NamedReturn
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "1.0.0".freeze
3
3
  end
@@ -4,9 +4,12 @@ module NamedReturn
4
4
  attr_reader :config
5
5
 
6
6
  # Wrap a method with catch DSL and pass in config.
7
- def initialize(method, config)
7
+ def initialize(method, config, bind)
8
8
  @method = method
9
9
  @config = config
10
+ @callbacks = {}
11
+ @response = {}
12
+ bind(bind)
10
13
  end
11
14
 
12
15
  # Get wrapped method name.
@@ -19,13 +22,6 @@ module NamedReturn
19
22
  @callbacks[label] = block
20
23
  end
21
24
 
22
- # Prepare for next run.
23
- def reset(bind)
24
- @callbacks = {}
25
- @response = {}
26
- bind(bind)
27
- end
28
-
29
25
  # Call the wrapped method with catches inserted by the DSL.
30
26
  def call(*args, &block)
31
27
  return_pair = recursive_catch(@callbacks.to_a, *args, &block)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: named_return
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon George
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2017-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler