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.
@@ -20,7 +20,7 @@ module Jeeves
20
20
  def define_lazy
21
21
  scope = @scope
22
22
  external_name = @external_name
23
- @target.class.send(:define_method, @internal_name) do |*args, &block|
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.class.send(:define_method, @internal_name) do |*args, &block|
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.class.send(:define_method, @internal_name) do |*args, &block|
40
+ @target.singleton_class.send(:define_method, @internal_name) do |*args, &block|
41
41
  delegator = ResolveDependency.call(scope, external_name)
42
- self.class.send(:define_method, internal_name) do |*args, &block|
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)
@@ -1,7 +1,7 @@
1
1
  module Jeeves
2
2
  MAJOR_VERSION = 0
3
3
  MINOR_VERSION = 2
4
- PATCH_VERSION = 2
4
+ PATCH_VERSION = 3
5
5
  VERSION = [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION].join('.')
6
6
  end
7
7
 
@@ -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.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-20 00:00:00.000000000 Z
12
+ date: 2012-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec