aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-16 18:17:44 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-16 18:17:44 -0700
commiteac9e0325c3f050b186328462798f20f5d2969a8 (patch)
tree3f667a6d1535e0dfee5009b9b368a0a5c3ea0e1c /activesupport/lib
parent82efe8943bf6ff12b597987506bf177d66609049 (diff)
parent1efe30ebcef2e6d3967742f9bcf4f6675a946d14 (diff)
downloadrails-eac9e0325c3f050b186328462798f20f5d2969a8.tar.gz
rails-eac9e0325c3f050b186328462798f20f5d2969a8.tar.bz2
rails-eac9e0325c3f050b186328462798f20f5d2969a8.zip
Merge pull request #7645 from larrylv/configurable-defaults
Set up config_accessor with a default value by block
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/configurable.rb24
1 files changed, 18 insertions, 6 deletions
diff --git a/activesupport/lib/active_support/configurable.rb b/activesupport/lib/active_support/configurable.rb
index 307ae40398..15a5b98d56 100644
--- a/activesupport/lib/active_support/configurable.rb
+++ b/activesupport/lib/active_support/configurable.rb
@@ -39,7 +39,7 @@ module ActiveSupport
# Allows you to add shortcut so that you don't have to refer to attribute
# through config. Also look at the example for config to contrast.
- #
+ #
# Defines both class and instance config accessors.
#
# class User
@@ -47,16 +47,16 @@ module ActiveSupport
# config_accessor :allowed_access
# end
#
- # User.allowed_access # => nil
+ # User.allowed_access # => nil
# User.allowed_access = false
- # User.allowed_access # => false
- #
+ # User.allowed_access # => false
+ #
# user = User.new
# user.allowed_access # => false
# user.allowed_access = true
# user.allowed_access # => true
#
- # User.allowed_access # => false
+ # User.allowed_access # => false
#
# The attribute name must be a valid method name in Ruby.
#
@@ -91,7 +91,18 @@ module ActiveSupport
#  User.allowed_access # => false
#
# User.new.allowed_access = true # => NoMethodError
- # User.new.allowed_access # => NoMethodError
+ # User.new.allowed_access # => NoMethodError
+ #
+ # Also you can pass a block to set up the attribute with a default value.
+ #
+ # class User
+ # include ActiveSupport::Configurable
+ # config_accessor :hair_colors do
+ # [:brown, :black, :blonde, :red]
+ # end
+ # end
+ #
+ # User.hair_colors # => [:brown, :black, :blonde, :red]
def config_accessor(*names)
options = names.extract_options!
@@ -108,6 +119,7 @@ module ActiveSupport
class_eval reader, __FILE__, reader_line unless options[:instance_reader] == false
class_eval writer, __FILE__, writer_line unless options[:instance_writer] == false
end
+ send("#{name}=", yield) if block_given?
end
end
end