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]

Source | Google | Stack overflow

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 branch

git checkout -b -your-name--update-docs-ActiveSupport--Configurable--ClassMethods-config_accessor-for-pr


# Commit to git

git 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 request

gem 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!