concerning 1.0.3 → 1.1.0
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.
- checksums.yaml +4 -4
- data/lib/concerning.rb +17 -1
- data/lib/concerning/concern_class_methods.rb +11 -0
- data/lib/concerning/kernel_concern.rb +6 -0
- data/lib/concerning/{extension.rb → module_concerning.rb} +19 -32
- data/test/active_support_stub/active_support/core_ext/kernel/concern.rb +1 -0
- data/test/active_support_stub/active_support/core_ext/module/concerning.rb +1 -1
- data/test/concerning_test.rb +3 -2
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bba544478b9125ab14ef5cbe4c9f76599019ba15
|
4
|
+
data.tar.gz: f54ab418712a3135f16c3f2ee4b82cb2c8f5a3a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 015670567443a9a37ef4a204dbbcc4d12dc9e4ea9ee6c6ce42792e860c89afa25ddf2bafe8c3c9cf24420d6d81e0213a75069bf10ea1d2f6c0d79a734e76c5fa
|
7
|
+
data.tar.gz: 4ee89b3d9e83bba243fbe1428df4fea1dfe824e2ea30e8d6ec3f66ac898ce0a20ec6430d108a6e4eab2a78dc1edb678397ae8937e808608d760ef83a0f6ecdb3
|
data/lib/concerning.rb
CHANGED
@@ -5,8 +5,24 @@
|
|
5
5
|
# This allows libraries which support multiple Rails versions to depend on
|
6
6
|
# `concerning` without worrying about implementation collision. This lib
|
7
7
|
# will step aside if it sees its work is done.
|
8
|
+
|
9
|
+
require 'active_support/concern'
|
10
|
+
|
11
|
+
# Check for Concern#class_methods
|
12
|
+
if !ActiveSupport::Concern.method_defined?(:class_methods)
|
13
|
+
require 'concerning/concern_class_methods'
|
14
|
+
end
|
15
|
+
|
16
|
+
# Check for Module#concerning
|
8
17
|
begin
|
9
18
|
require 'active_support/core_ext/module/concerning'
|
10
19
|
rescue LoadError
|
11
|
-
require 'concerning/
|
20
|
+
require 'concerning/module_concerning'
|
21
|
+
end
|
22
|
+
|
23
|
+
# Check for Kernel#concern
|
24
|
+
begin
|
25
|
+
require 'active_support/core_ext/kernel/concern'
|
26
|
+
rescue LoadError
|
27
|
+
require 'concerning/kernel_concern'
|
12
28
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ActiveSupport::Concern
|
2
|
+
# Provide a class_methods alternative to ClassMethods since defining
|
3
|
+
# a constant within a block doesn't work as folks would expect.
|
4
|
+
def class_methods(&class_methods_module_definition)
|
5
|
+
mod = const_defined?(:ClassMethods) ?
|
6
|
+
const_get(:ClassMethods) :
|
7
|
+
const_set(:ClassMethods, Module.new)
|
8
|
+
|
9
|
+
mod.module_eval(&class_methods_module_definition)
|
10
|
+
end
|
11
|
+
end
|
@@ -115,41 +115,28 @@ class Module
|
|
115
115
|
# * clean up junk drawer classes by encapsulating their concerns
|
116
116
|
# * stop leaning on protected/private for "internal stuff" modularity
|
117
117
|
module Concerning
|
118
|
+
# Define a new concern and mix it in.
|
118
119
|
def concerning(topic, &block)
|
119
120
|
include concern(topic, &block)
|
120
121
|
end
|
121
|
-
end
|
122
|
-
include Concerning # We do this mixin just for nice RDoc.
|
123
|
-
end
|
124
122
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
123
|
+
# A low-cruft shortcut to define a concern.
|
124
|
+
#
|
125
|
+
# concern :EventTracking do
|
126
|
+
# ...
|
127
|
+
# end
|
128
|
+
#
|
129
|
+
# module EventTracking
|
130
|
+
# extend ActiveSupport::Concern
|
131
|
+
#
|
132
|
+
# ...
|
133
|
+
# end
|
134
|
+
def concern(topic, &module_definition)
|
135
|
+
const_set topic, Module.new {
|
136
|
+
extend ActiveSupport::Concern
|
137
|
+
module_eval(&module_definition)
|
138
|
+
}
|
139
|
+
end
|
142
140
|
end
|
143
|
-
|
144
|
-
|
145
|
-
# Provide a class_methods alternative to ClassMethods since defining
|
146
|
-
# a constant within a block doesn't work as folks would expect.
|
147
|
-
ActiveSupport::Concern.module_eval do
|
148
|
-
def class_methods(&class_methods_module_definition)
|
149
|
-
mod = const_defined?(:ClassMethods) ?
|
150
|
-
const_get(:ClassMethods) :
|
151
|
-
const_set(:ClassMethods, Module.new)
|
152
|
-
|
153
|
-
mod.module_eval(&class_methods_module_definition)
|
154
|
-
end unless method_defined? :class_methods
|
141
|
+
include Concerning # We do this mixin just for nice RDoc.
|
155
142
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
KERNEL_CONCERN_DEFERRED_TO_ACTIVE_SUPPORT = true
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
MODULE_CONCERNING_DEFERRED_TO_ACTIVE_SUPPORT = true
|
data/test/concerning_test.rb
CHANGED
@@ -33,7 +33,7 @@ class ConcernTest < Minitest::Test
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_may_be_defined_at_toplevel
|
36
|
-
mod =
|
36
|
+
mod = ::TOPLEVEL_BINDING.eval 'concern(:Foo) { }'
|
37
37
|
assert_equal mod, ::Foo
|
38
38
|
assert_kind_of ActiveSupport::Concern, ::Foo
|
39
39
|
assert !Object.ancestors.include?(::Foo), mod.ancestors.inspect
|
@@ -83,7 +83,8 @@ class ForwardCompatibilityWithRails41Test < Minitest::Test
|
|
83
83
|
with_stubbed_active_support_in_load_path do
|
84
84
|
require 'concerning'
|
85
85
|
end
|
86
|
-
assert defined?(::
|
86
|
+
assert defined?(::MODULE_CONCERNING_DEFERRED_TO_ACTIVE_SUPPORT)
|
87
|
+
assert defined?(::KERNEL_CONCERN_DEFERRED_TO_ACTIVE_SUPPORT)
|
87
88
|
end
|
88
89
|
|
89
90
|
private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concerning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Kemper
|
@@ -44,8 +44,11 @@ executables: []
|
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
-
- ./lib/concerning/
|
47
|
+
- ./lib/concerning/concern_class_methods.rb
|
48
|
+
- ./lib/concerning/kernel_concern.rb
|
49
|
+
- ./lib/concerning/module_concerning.rb
|
48
50
|
- ./lib/concerning.rb
|
51
|
+
- ./test/active_support_stub/active_support/core_ext/kernel/concern.rb
|
49
52
|
- ./test/active_support_stub/active_support/core_ext/module/concerning.rb
|
50
53
|
- ./test/concerning_test.rb
|
51
54
|
homepage: https://github.com/basecamp/concerning
|
@@ -73,5 +76,6 @@ signing_key:
|
|
73
76
|
specification_version: 4
|
74
77
|
summary: Separating small concerns
|
75
78
|
test_files:
|
79
|
+
- ./test/active_support_stub/active_support/core_ext/kernel/concern.rb
|
76
80
|
- ./test/active_support_stub/active_support/core_ext/module/concerning.rb
|
77
81
|
- ./test/concerning_test.rb
|