jeeves 0.2.2 → 0.2.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.
- data/lib/jeeves/define_imported_method.rb +4 -4
- data/lib/jeeves/version.rb +1 -1
- data/spec/integration/import_spec.rb +10 -0
- metadata +2 -2
@@ -20,7 +20,7 @@ module Jeeves
|
|
20
20
|
def define_lazy
|
21
21
|
scope = @scope
|
22
22
|
external_name = @external_name
|
23
|
-
@target.
|
23
|
+
@target.singleton_class.send(:define_method, @internal_name) do |*args, &block|
|
24
24
|
delegator = ResolveDependency.call(scope, external_name)
|
25
25
|
delegator.call(*args, &block)
|
26
26
|
end
|
@@ -28,7 +28,7 @@ module Jeeves
|
|
28
28
|
|
29
29
|
def define_non_lazy
|
30
30
|
delegator = ResolveDependency.call(@scope, @external_name)
|
31
|
-
@target.
|
31
|
+
@target.singleton_class.send(:define_method, @internal_name) do |*args, &block|
|
32
32
|
delegator.call(*args, &block)
|
33
33
|
end
|
34
34
|
end
|
@@ -37,9 +37,9 @@ module Jeeves
|
|
37
37
|
scope = @scope
|
38
38
|
internal_name = @internal_name
|
39
39
|
external_name = @external_name
|
40
|
-
@target.
|
40
|
+
@target.singleton_class.send(:define_method, @internal_name) do |*args, &block|
|
41
41
|
delegator = ResolveDependency.call(scope, external_name)
|
42
|
-
self.
|
42
|
+
self.singleton_class.send(:define_method, internal_name) do |*args, &block|
|
43
43
|
delegator.call(*args, &block)
|
44
44
|
end
|
45
45
|
delegator.call(*args, &block)
|
data/lib/jeeves/version.rb
CHANGED
@@ -26,6 +26,10 @@ module JeevesTestApp
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
class AClass
|
30
|
+
A_CONSTANT = 4326
|
31
|
+
end
|
32
|
+
|
29
33
|
class TestSubject
|
30
34
|
extend Jeeves
|
31
35
|
import :my_method, :my_callable, :my_constant, from: OtherScope
|
@@ -33,6 +37,7 @@ module JeevesTestApp
|
|
33
37
|
import :lazy_method, lazy: true
|
34
38
|
import :smart_resolver
|
35
39
|
import [:marco, :say_polo]
|
40
|
+
import :a_constant, from: AClass, lazy: true
|
36
41
|
end
|
37
42
|
|
38
43
|
def self.smart_resolver
|
@@ -94,6 +99,11 @@ describe "import" do
|
|
94
99
|
result.should == "FOO-BAR-BAZ"
|
95
100
|
end
|
96
101
|
|
102
|
+
it "defines imported methods in the singleton class" do
|
103
|
+
subject.a_constant.should == 4326
|
104
|
+
# this results in a stack overflow if the methods are defined on Class
|
105
|
+
end
|
106
|
+
|
97
107
|
it "raises an error if no importers can find the dependency" do
|
98
108
|
Jeeves.stub(:in_test_framework?) { false } # to avoid RSpec integration
|
99
109
|
expect do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jeeves
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|