aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-04-17 22:15:07 +0900
committerGitHub <noreply@github.com>2019-04-17 22:15:07 +0900
commit72842b36953f1620b59d3fed4d748a8cfab986c3 (patch)
tree07074e24e0d0269cb9be58f1e95029c2a795cd0c /activesupport
parentdb5d4b186ee6dd67ad5f1576f3958be9e85d348e (diff)
parent8dcce7021fbadb344d3b04243f8e01017a0baab8 (diff)
downloadrails-72842b36953f1620b59d3fed4d748a8cfab986c3.tar.gz
rails-72842b36953f1620b59d3fed4d748a8cfab986c3.tar.bz2
rails-72842b36953f1620b59d3fed4d748a8cfab986c3.zip
Merge pull request #35886 from okuramasafumi/add-docs-to-concern
Add documentations to concern methods [ci skip]
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/concern.rb25
1 files changed, 24 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/concern.rb b/activesupport/lib/active_support/concern.rb
index 5d356a0ab6..708c445031 100644
--- a/activesupport/lib/active_support/concern.rb
+++ b/activesupport/lib/active_support/concern.rb
@@ -110,7 +110,7 @@ module ActiveSupport
base.instance_variable_set(:@_dependencies, [])
end
- def append_features(base)
+ def append_features(base) #:nodoc:
if base.instance_variable_defined?(:@_dependencies)
base.instance_variable_get(:@_dependencies) << self
false
@@ -123,6 +123,9 @@ module ActiveSupport
end
end
+ # Evaluate given block in context of base class,
+ # so that you can write class macros here.
+ # When you define more than one +included+ block, it raises an exception.
def included(base = nil, &block)
if base.nil?
if instance_variable_defined?(:@_included_block)
@@ -137,6 +140,26 @@ module ActiveSupport
end
end
+ # Define class methods from given block.
+ # You can define private class methods as well.
+ #
+ # module Example
+ # extend ActiveSupport::Concern
+ #
+ # class_methods do
+ # def foo; puts 'foo'; end
+ #
+ # private
+ # def bar; puts 'bar'; end
+ # end
+ # end
+ #
+ # class Buzz
+ # include Example
+ # end
+ #
+ # Buzz.foo # => "foo"
+ # Buzz.bar # => private method 'bar' called for Buzz:Class(NoMethodError)
def class_methods(&class_methods_module_definition)
mod = const_defined?(:ClassMethods, false) ?
const_get(:ClassMethods) :