The universal Base class you've always wanted.
Ruby Shell
Pull request Compare This branch is 1 commit ahead, 2 commits behind garybernhardt:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
CHANGELOG.md
Gemfile
Gemfile.lock
Manifest.txt
README.md
Rakefile
test-against-multiple-rubies.sh

README.md

Base

DESCRIPTION:

People love Base classes! They have tons of methods waiting to be used. Just check out ActiveRecord::Base's method list:

>> ActiveRecord::Base.methods.length
=> 572

But why stop there? Why not have even more methods? In fact, let's put every method on one Base class!

So I did. It's called Base. Just subclass it and feel free to directly reference any class method, instance method, or constant defined on any module or class in the system. Like this:

class Cantaloupe < Base
  def embiggen
    encode64(deflate(SEPARATOR))
  end
end

>> Cantaloupe.new.embiggen
=> "eJzTBwAAMAAw\n"

See that embiggen method calling encode64 and deflate methods? Those come from the Base64 and Zlib modules. And the SEPARATOR constant is defined in File. Base don't care where it's defined! Base calls what it wants!

In fact, Base will call anything it wants. At any time it wants. Even for the same method or constant!

>> potato = Cantaloupe.new
>> potato.size
=> NoMethodError: undefined method `size' for #<Class:0x007f8d69029970>
>> potato.size
=> 2
>> potato.size
=> 0
>> potato.size
=> NoMethodError: undefined method `size' for #<Class:0x007f8d69809668>
>> potato.size
=> 0

By the way, remember those 572 ActiveRecord methods? That's amateur stuff. Check out Base loaded inside a Rails app:

>> Base.new.methods.count
=> 5794

It's so badass that it takes five seconds just to answer that question!

Base is just craaazzy! It's the most fearless class in all of Ruby. Base doesn't afraid of anything!

LICENSE:

Distributed under the union of the terms specified by all current OSI-approved licenses. In the event of a conflict, a die is to be rolled.

PRAISE FOR BASE

@garybernhardt @kantrn ... Can't tell if joke or just Ruby.

- @shazow

@garybernhardt y u troll soooo good? ;-)

- @amerine

@garybernhardt Imagine all the things you could have done doing not that

- @mrb_bk

@garybernhardt I hate you.

- @jmazzi

SHOULD I USE THIS IN MY SYSTEM?

Yes. I am being completely serious. You should.

Definitely.