Commit d956418 1 parent 3fd5e54 commit d956418 Copy full SHA for d956418
File tree 6 files changed +59
-8
lines changed
6 files changed +59
-8
lines changed Original file line number Diff line number Diff line change 1
1
## [ Unreleased]
2
2
3
+ ### Fixed
4
+ - Fix compatibility with ` ActiveSupport::Concern ` . ([ @tycooon ] and [ @AlexWayfer ] ) [ #26 ]
5
+
3
6
## [ 1.3.0] - 2020-02-10
4
7
### Added
5
8
- Allow memoization after including module with Memery. ([ @AlexWayfer ] ) [ #23 ]
Original file line number Diff line number Diff line change 7
7
GEM
8
8
remote: https://rubygems.org/
9
9
specs:
10
+ activesupport (5.2.4.2 )
11
+ concurrent-ruby (~> 1.0 , >= 1.0.2 )
12
+ i18n (>= 0.7 , < 2 )
13
+ minitest (~> 5.1 )
14
+ tzinfo (~> 1.1 )
10
15
ast (2.4.0 )
11
16
benchmark-ips (2.7.2 )
12
17
benchmark-memory (0.1.2 )
13
18
memory_profiler (~> 0.9 )
14
19
coderay (1.1.2 )
20
+ concurrent-ruby (1.1.6 )
15
21
coveralls (0.8.23 )
16
22
json (>= 1.8 , < 3 )
17
23
simplecov (~> 0.16.1 )
20
26
tins (~> 1.6 )
21
27
diff-lcs (1.3 )
22
28
docile (1.3.2 )
29
+ i18n (1.8.2 )
30
+ concurrent-ruby (~> 1.0 )
23
31
jaro_winkler (1.5.4 )
24
32
json (2.3.0 )
25
33
memory_profiler (0.9.14 )
26
34
method_source (0.9.2 )
35
+ minitest (5.14.0 )
27
36
parallel (1.19.1 )
28
37
parser (2.7.0.2 )
29
38
ast (~> 2.4.0 )
76
85
term-ansicolor (1.7.1 )
77
86
tins (~> 1.0 )
78
87
thor (1.0.1 )
88
+ thread_safe (0.3.6 )
79
89
tins (1.24.0 )
80
90
sync
91
+ tzinfo (1.2.6 )
92
+ thread_safe (~> 0.1 )
81
93
unicode-display_width (1.6.1 )
82
94
83
95
PLATFORMS
84
96
ruby
85
97
86
98
DEPENDENCIES
99
+ activesupport (~> 5.0 )
87
100
benchmark-ips
88
101
benchmark-memory
89
102
bundler
Original file line number Diff line number Diff line change @@ -11,11 +11,24 @@ def monotonic_clock
11
11
end
12
12
end
13
13
14
+ OUR_BLOCK = lambda do
15
+ extend ( ClassMethods )
16
+ include ( InstanceMethods )
17
+ extend ModuleMethods if instance_of? ( Module )
18
+ end
19
+
20
+ private_constant :OUR_BLOCK
21
+
14
22
module ModuleMethods
15
- def included ( base )
16
- base . extend ( ClassMethods )
17
- base . include ( InstanceMethods )
18
- base . extend ModuleMethods if base . instance_of? ( Module )
23
+ def included ( base = nil , &block )
24
+ if base . nil? && block
25
+ super do
26
+ instance_exec ( &block )
27
+ instance_exec ( &OUR_BLOCK )
28
+ end
29
+ else
30
+ base . instance_exec ( &OUR_BLOCK )
31
+ end
19
32
end
20
33
end
21
34
@@ -32,16 +45,14 @@ def memoized?(method_name)
32
45
return false unless defined? ( @_memery_module )
33
46
34
47
@_memery_module . method_defined? ( method_name ) ||
35
- @_memery_module . private_method_defined? ( method_name )
48
+ @_memery_module . private_method_defined? ( method_name )
36
49
end
37
50
38
51
private
39
52
40
53
def prepend_memery_module!
41
54
return if defined? ( @_memery_module )
42
- @_memery_module = Module . new do
43
- extend MemoizationModule
44
- end
55
+ @_memery_module = Module . new { extend MemoizationModule }
45
56
prepend @_memery_module
46
57
end
47
58
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
23
23
spec . add_runtime_dependency "ruby2_keywords" , "~> 0.0.2"
24
24
25
+ spec . add_development_dependency "activesupport" , "~> 5.0"
25
26
spec . add_development_dependency "benchmark-ips"
26
27
spec . add_development_dependency "benchmark-memory"
27
28
spec . add_development_dependency "bundler"
Original file line number Diff line number Diff line change @@ -260,6 +260,28 @@ def self.macro(name)
260
260
end
261
261
end
262
262
263
+ context "module with self.included method defined" do
264
+ subject ( :c ) { C . new }
265
+
266
+ before { C . include ( some_mixin ) }
267
+
268
+ let ( :some_mixin ) do
269
+ Module . new do
270
+ extend ActiveSupport ::Concern
271
+ include Memery
272
+
273
+ included do
274
+ attr_accessor :a
275
+ end
276
+ end
277
+ end
278
+
279
+ it "doesn't override existing method" do
280
+ c . a = 15
281
+ expect ( c . a ) . to eq ( 15 )
282
+ end
283
+ end
284
+
263
285
context "class method with args" do
264
286
subject ( :d ) { D }
265
287
Original file line number Diff line number Diff line change 12
12
SimpleCov . start
13
13
14
14
require "memery"
15
+ require "active_support/concern"
15
16
16
17
RSpec . configure do |config |
17
18
# Enable flags like --only-failures and --next-failure
You can’t perform that action at this time.
0 commit comments