Stop ActiveSupport Anywhere
We love ruby and ruby community. We can find excellent web (and not only web) frameworks like rails, hanami, grape, sinatra, dry-wb, roda, etc. But sometimes some developers use rails dependency in gems which not related to use only with rails. That's why the main idea of this repo is to collect all libraries which you can use instead using ActiveSupport
Some Problems with ActiveSupport
ActiveSupport is a "toolkit of support libraries and Ruby core extensions extracted from the Rails framework". Core extensions is a prettier name for monkey-patches of Ruby core classes. Monkey-patching breaks fundamental contracts with the language core - with deadly consequences.
Monkey-patching hinders interoperability. Any piece of Ruby software is written to work either in the monkey-patch-free environment, or in the monkey-patched one. Sure: with a bit of luck, many work in both. But won't your gem break with the next release of ActiveRecord (which it itself doesn't rely on at all)? Noone can say in advance.
When it is Permissible to Depend on ActiveSupport?
"You are definitely allowed to shoot yourself in the foot, if you really want to." It is only responsible to rely on ActiveSupport (or another similar ton of monkey-patches) if you are in position of the "lord of the stack", i.e., if you are developing an application, and you are the only one who decides forever, which components will interoperate. Libraries, aiming to be general tools, maximally interoperable with others, as well as applications open to extensions, must never pollute the runtime environment by monkey-patching.
- collect all gems or solutions which can replace some parts of AS (current status)
- filter all this information
- create list of not only rails gems which use AS and try to fix it
Table of contents
# instead of: [:blue, :green].blue? # do this: [:blue, :green].include?(:blue)
- gem: Morozzzko/backtrace_cleaner link
- gem: dry-configurable link
- gem: markevans/configurable link
- gem: ged/configurability link
- post: Ruby Gem Configuration Patterns link
- post: MyGem.configure Block link
- ruby-concurrency link
- core library: Gem::Deprecate link
- gem: Hanami::Deprecation link
- gem: erikh/deprecated link
- gem: cbeer/deprecation link
- core library: OpenStruct link
- core library:
Not rails specific gems which use AS as dependency