Skip to content

SuperCurrent makes CurrentAttributes even more exciting!

License

Notifications You must be signed in to change notification settings

sampokuokkanen/SuperCurrent

Repository files navigation

SuperCurrent

A supercurrent is a superconducting current, that is, electric current which flows without dissipation in a superconductor.

Wikipedia

SuperCurrent takes away the need to define a Current class and instead makes it available from anywhere in your app without having to define it.

This means that your test coverage will not suffer from ActiveSupport::CurrentAttributes!

You can define the class name of the Current class, so if you're already using Current for something else, you can use a different name.

# config/initializers/super_current.rb
SuperCurrent.config.current_class_name = 'SuperCurrent'

Then you can have your existing Current class be a subclass of SuperCurrent and it will still work with all the exciting features of SuperCurrent.

class Current < SuperCurrent
  # ...
end

Usage

Just think up a name for your attribute and assign it! It will be created on the Current class automatically.

Current.foo = 'bar'
Current.foo # => 'bar'

SuperCurrent also adds the ability to use [] and []= to access the attributes.

Current[:foo] = 'bar'
Current[:foo] # => 'bar'

Even something like Current[:foo][:bar] will work!

# No need to define Current[:hoge] beforehand!
Current[:hoge][:bar] = "hello"
Current[:hoge][:bar] # => 'bar'

This means that you no longer need to define the attributes on the Current class beforehand.

So if you have a class like this:

class Current < ActiveSupport::CurrentAttributes
  attribute :foo
  attribute :bar
  attribute :baz
  attribute :hoge
end

You can just delete it and enjoy the benefits of SuperCurrent! Test coverage might go up, too!

Installation

Add this line to your application's Gemfile:

gem "super_current"

And then execute:

$ bundle

Or install it yourself as:

$ gem install super_current

Inspiration

Inspired by: https://wiki.php.net/rfc/deprecate_dynamic_properties

Contributing

Feel free to contribute.

License

The gem is available as open source under the terms of the MIT License.

About

SuperCurrent makes CurrentAttributes even more exciting!

Resources

License

Stars

Watchers

Forks

Packages

No packages published