sonic-pi
https://github.com/sonic-pi-net/sonic-pi
C++
Code. Music. Live.
ActiveSupport::Configurable::ClassMethods#config_accessor
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
include ActiveSupport::Configurable
config_accessor :allowed_access
end
User.allowed_access # => nil
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
The attribute name must be a valid method name in Ruby.
class User
include ActiveSupport::Configurable
config_accessor :"1_Badname"
end
# => NameError: invalid config attribute name
To opt out of the instance writer method, pass <tt>instance_writer: false</tt>.
To opt out of the instance reader method, pass <tt>instance_reader: false</tt>.
class User
include ActiveSupport::Configurable
config_accessor :allowed_access, instance_reader: false, instance_writer: false
end
User.allowed_access = false
User.allowed_access # => false
User.new.allowed_access = true # => NoMethodError
User.new.allowed_access # => NoMethodError
Or pass <tt>instance_accessor: false</tt>, to opt out both instance methods.
class User
include ActiveSupport::Configurable
config_accessor :allowed_access, instance_accessor: false
end
User.allowed_access = false
User.allowed_access # => false
User.new.allowed_access = true # => 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]Edit
git clone [email protected]:sonic-pi-net/sonic-pi.git
cd sonic-pi
open app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/configurable.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-ActiveSupport--Configurable--ClassMethods-config_accessor-for-pr
# Commit to gitgit add app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/configurable.rbgit commit -m "better docs for ActiveSupport::Configurable::ClassMethods#config_accessor"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-ActiveSupport--Configurable--ClassMethods-config_accessor-for-pr
hub pull-request
# Celebrate!