mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Consistently use kwargs for instance_{reader,writer,accessor}
options
Since #29294, `mattr_acessor` uses kwargs for `instance_reader`, `instance_writer`, and `instance_accessor` options. `thread_mattr_accessor` and `config_accessor` also take the same options, so let's maintain these options handles the same.
This commit is contained in:
parent
6d37c6c41a
commit
19280f6653
2 changed files with 11 additions and 19 deletions
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
require "active_support/concern"
|
require "active_support/concern"
|
||||||
require "active_support/ordered_options"
|
require "active_support/ordered_options"
|
||||||
require "active_support/core_ext/array/extract_options"
|
|
||||||
|
|
||||||
module ActiveSupport
|
module ActiveSupport
|
||||||
# Configurable provides a <tt>config</tt> method to store and retrieve
|
# Configurable provides a <tt>config</tt> method to store and retrieve
|
||||||
|
@ -105,9 +104,7 @@ module ActiveSupport
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# User.hair_colors # => [:brown, :black, :blonde, :red]
|
# User.hair_colors # => [:brown, :black, :blonde, :red]
|
||||||
def config_accessor(*names) #:doc:
|
def config_accessor(*names, instance_reader: true, instance_writer: true, instance_accessor: true) # :doc:
|
||||||
options = names.extract_options!
|
|
||||||
|
|
||||||
names.each do |name|
|
names.each do |name|
|
||||||
raise NameError.new("invalid config attribute name") unless /\A[_A-Za-z]\w*\z/.match?(name)
|
raise NameError.new("invalid config attribute name") unless /\A[_A-Za-z]\w*\z/.match?(name)
|
||||||
|
|
||||||
|
@ -117,9 +114,9 @@ module ActiveSupport
|
||||||
singleton_class.class_eval reader, __FILE__, reader_line
|
singleton_class.class_eval reader, __FILE__, reader_line
|
||||||
singleton_class.class_eval writer, __FILE__, writer_line
|
singleton_class.class_eval writer, __FILE__, writer_line
|
||||||
|
|
||||||
unless options[:instance_accessor] == false
|
if instance_accessor
|
||||||
class_eval reader, __FILE__, reader_line unless options[:instance_reader] == false
|
class_eval reader, __FILE__, reader_line if instance_reader
|
||||||
class_eval writer, __FILE__, writer_line unless options[:instance_writer] == false
|
class_eval writer, __FILE__, writer_line if instance_writer
|
||||||
end
|
end
|
||||||
send("#{name}=", yield) if block_given?
|
send("#{name}=", yield) if block_given?
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "active_support/core_ext/array/extract_options"
|
|
||||||
|
|
||||||
# Extends the module object with class/module and instance accessors for
|
# Extends the module object with class/module and instance accessors for
|
||||||
# class/module attributes, just like the native attr* accessors for instance
|
# class/module attributes, just like the native attr* accessors for instance
|
||||||
# attributes, but does so on a per-thread basis.
|
# attributes, but does so on a per-thread basis.
|
||||||
|
@ -35,9 +33,7 @@ class Module
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# Current.new.user # => NoMethodError
|
# Current.new.user # => NoMethodError
|
||||||
def thread_mattr_reader(*syms) # :nodoc:
|
def thread_mattr_reader(*syms, instance_reader: true, instance_accessor: true) # :nodoc:
|
||||||
options = syms.extract_options!
|
|
||||||
|
|
||||||
syms.each do |sym|
|
syms.each do |sym|
|
||||||
raise NameError.new("invalid attribute name: #{sym}") unless /^[_A-Za-z]\w*$/.match?(sym)
|
raise NameError.new("invalid attribute name: #{sym}") unless /^[_A-Za-z]\w*$/.match?(sym)
|
||||||
|
|
||||||
|
@ -49,7 +45,7 @@ class Module
|
||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
unless options[:instance_reader] == false || options[:instance_accessor] == false
|
if instance_reader && instance_accessor
|
||||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||||
def #{sym}
|
def #{sym}
|
||||||
self.class.#{sym}
|
self.class.#{sym}
|
||||||
|
@ -78,8 +74,7 @@ class Module
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# Current.new.user = "DHH" # => NoMethodError
|
# Current.new.user = "DHH" # => NoMethodError
|
||||||
def thread_mattr_writer(*syms) # :nodoc:
|
def thread_mattr_writer(*syms, instance_writer: true, instance_accessor: true) # :nodoc:
|
||||||
options = syms.extract_options!
|
|
||||||
syms.each do |sym|
|
syms.each do |sym|
|
||||||
raise NameError.new("invalid attribute name: #{sym}") unless /^[_A-Za-z]\w*$/.match?(sym)
|
raise NameError.new("invalid attribute name: #{sym}") unless /^[_A-Za-z]\w*$/.match?(sym)
|
||||||
|
|
||||||
|
@ -91,7 +86,7 @@ class Module
|
||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
unless options[:instance_writer] == false || options[:instance_accessor] == false
|
if instance_writer && instance_accessor
|
||||||
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
||||||
def #{sym}=(obj)
|
def #{sym}=(obj)
|
||||||
self.class.#{sym} = obj
|
self.class.#{sym} = obj
|
||||||
|
@ -141,9 +136,9 @@ class Module
|
||||||
#
|
#
|
||||||
# Current.new.user = "DHH" # => NoMethodError
|
# Current.new.user = "DHH" # => NoMethodError
|
||||||
# Current.new.user # => NoMethodError
|
# Current.new.user # => NoMethodError
|
||||||
def thread_mattr_accessor(*syms)
|
def thread_mattr_accessor(*syms, instance_reader: true, instance_writer: true, instance_accessor: true)
|
||||||
thread_mattr_reader(*syms)
|
thread_mattr_reader(*syms, instance_reader: instance_reader, instance_accessor: instance_accessor)
|
||||||
thread_mattr_writer(*syms)
|
thread_mattr_writer(*syms, instance_writer: instance_writer, instance_accessor: instance_accessor)
|
||||||
end
|
end
|
||||||
alias :thread_cattr_accessor :thread_mattr_accessor
|
alias :thread_cattr_accessor :thread_mattr_accessor
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue