ghost_dog 0.0.1 → 0.0.2
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/README.md +1 -1
- data/lib/ghost_dog.rb +13 -23
- data/lib/ghost_dog/version.rb +1 -1
- data/spec/lib/ghost_dog_spec.rb +33 -0
- metadata +16 -5
- checksums.yaml +0 -15
data/README.md
CHANGED
@@ -109,7 +109,7 @@ class MyModel < ActiveRecord::Base
|
|
109
109
|
raise ArgumentError, "Wrong number of arguments (#{args.length} for #{columns_to_find_by.length})"
|
110
110
|
end
|
111
111
|
|
112
|
-
where(Hash[columns_to_find_by.zip(args)])
|
112
|
+
where(Hash[columns_to_find_by.zip(args)]).first
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
data/lib/ghost_dog.rb
CHANGED
@@ -20,8 +20,10 @@ module GhostDog
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def _klass_where_ghost_method_definitions_are
|
23
|
-
if self.class
|
24
|
-
|
23
|
+
if self.class.is_a?(Class)
|
24
|
+
singleton_class.extend(ClassMethods) unless singleton_class.is_a?(ClassMethods)
|
25
|
+
|
26
|
+
singleton_class
|
25
27
|
else
|
26
28
|
self.class
|
27
29
|
end
|
@@ -47,17 +49,6 @@ module GhostDog
|
|
47
49
|
super
|
48
50
|
end
|
49
51
|
end
|
50
|
-
|
51
|
-
def inherited(child)
|
52
|
-
_setup_ghost_dog_singleton_class_inheritance(child)
|
53
|
-
super
|
54
|
-
end
|
55
|
-
|
56
|
-
def _setup_ghost_dog_singleton_class_inheritance(child)
|
57
|
-
if singleton_class.respond_to?(:_setup_ghost_dog_inheritance, :include_private)
|
58
|
-
singleton_class.send(:_setup_ghost_dog_inheritance, child.singleton_class)
|
59
|
-
end
|
60
|
-
end
|
61
52
|
end
|
62
53
|
|
63
54
|
module ClassMethods
|
@@ -70,16 +61,15 @@ module GhostDog
|
|
70
61
|
private
|
71
62
|
|
72
63
|
def _ghost_method_definitions
|
73
|
-
@_ghost_methods ||= []
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
child.instance_variable_set('@_ghost_methods', _ghost_method_definitions)
|
64
|
+
@_ghost_methods ||= [].tap do |defs|
|
65
|
+
klasses_that_might_have_ghost_methods = []
|
66
|
+
klasses_that_might_have_ghost_methods << superclass if defined?(superclass)
|
67
|
+
klasses_that_might_have_ghost_methods.concat(included_modules)
|
68
|
+
|
69
|
+
klasses_that_might_have_ghost_methods.select { |k| k.respond_to?(:_ghost_method_definitions, :include_private) }.each do |k|
|
70
|
+
defs.concat(k.send(:_ghost_method_definitions).dup)
|
71
|
+
end
|
72
|
+
end
|
83
73
|
end
|
84
74
|
end
|
85
75
|
end
|
data/lib/ghost_dog/version.rb
CHANGED
data/spec/lib/ghost_dog_spec.rb
CHANGED
@@ -27,6 +27,39 @@ describe GhostDog do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
context 'module responder' do
|
31
|
+
module MinimalModule
|
32
|
+
include GhostDog
|
33
|
+
|
34
|
+
ghost_method /^tell_me_(.+)$/ do |what_to_tell|
|
35
|
+
what_to_tell.gsub('_', ' ')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class MinimalImpl
|
40
|
+
include MinimalModule
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:obj) { MinimalImpl.new }
|
44
|
+
subject { obj }
|
45
|
+
its(:tell_me_hello_world) { should == "hello world" }
|
46
|
+
|
47
|
+
context 'singleton module' do
|
48
|
+
module SingletonModule
|
49
|
+
class << self
|
50
|
+
include GhostDog
|
51
|
+
|
52
|
+
ghost_method /^hello_(.+)$/ do |name|
|
53
|
+
name.gsub('_', ' ')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
subject { SingletonModule }
|
59
|
+
its(:hello_andrew_my_friend) { should == "andrew my friend" }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
30
63
|
context 'class level responder' do
|
31
64
|
class ClassLevel
|
32
65
|
class << self
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghost_dog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Andrew Warner
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-12-26 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: pry
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -93,27 +102,29 @@ files:
|
|
93
102
|
homepage: ''
|
94
103
|
licenses:
|
95
104
|
- MIT
|
96
|
-
metadata: {}
|
97
105
|
post_install_message:
|
98
106
|
rdoc_options: []
|
99
107
|
require_paths:
|
100
108
|
- lib
|
101
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
102
111
|
requirements:
|
103
112
|
- - ! '>='
|
104
113
|
- !ruby/object:Gem::Version
|
105
114
|
version: '0'
|
106
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
107
117
|
requirements:
|
108
118
|
- - ! '>='
|
109
119
|
- !ruby/object:Gem::Version
|
110
120
|
version: '0'
|
111
121
|
requirements: []
|
112
122
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
123
|
+
rubygems_version: 1.8.24
|
114
124
|
signing_key:
|
115
|
-
specification_version:
|
125
|
+
specification_version: 3
|
116
126
|
summary: Making method_missing easier since 2013
|
117
127
|
test_files:
|
118
128
|
- spec/lib/ghost_dog_spec.rb
|
119
129
|
- spec/spec_helper.rb
|
130
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
YWJkODQ1MWVhYTc1NzYyZjdlODNjZjc3YjFjYTQyODJlMjYzNDExOA==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YWJhMzMxMDdkMDZhMjAwZDEwYjRlZjcxNzFhMWNiNzk1Mjk1YTYxMA==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YTBiMGUzOGEzZWVlMGM2ZDhhZWU4MTg0NTNjMjcyYjE1NWIwYjVlY2RmMDYx
|
10
|
-
MTgwYjg2NTgzNjQyNGI3MWY2NmYwOWIyOGE0ZGZjZjg1M2M1NDU2MjA1NzJm
|
11
|
-
NzQ3ZDZkYjk2NDQ0ODk5ZDIwNTQ1YjI5ZDg3ODU1ZmQwMTI1MTI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MmYzYTlmNGY0YTljYTliODcxNDM2YWI4YzZlYzFiNjdkMmIzZDBiYzYxMzc3
|
14
|
-
ZDcyYTc5ZDQyMWQzM2RjMDY4ZTc3OTRjOWM4NDU5M2YzYTViZjA4ZTBhMjFk
|
15
|
-
OTU1ZTUwYTIzMjM0MTQwYjNmMjRiM2Y4MzJjOWVjNTZhYzc0NjA=
|