Simple Memoization for Ruby 2.0
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
lib
spec
.gitignore
.rspec
.ruby-version
.travis.yml
Gemfile
LICENCE
README.md
Rakefile
benchmark.rb
memoist2.gemspec

README.md

memoist2

Build Status

Simple Memoization for Ruby 2.0+.

Differences between Memoist & Memoist2

Unlike Memoist, this is not a drop-in replacement for old ActiveSupport::Memoizable. Memoist will still work just fine for that if you're using Ruby 2.0+. This project, on the other hand, is just me playing using Module#prepend which makes this stuff very simple.

Memoist

  • Works on all Rubies.
  • Is quite complicated.
  • Has the exact same api as ActiveSupport::Memoizable.

Memoist2

  • Only works on Ruby >= 2.0.0.
  • Is deliberately much simpler.
  • Has a slightly different API that could totally change.

Example

Memoize an instance method

class Foo
  include Memoist2

  def bar
    sleep 1 && 2**10
  end
  memoize :bar
end

Memoize a class method

class Foo
  include Memoist2

  def self.bar
    # something expensive
  end
  memoize_class_method :bar
end

Licence

Licensed under the MIT licence.

See the file LICENCE.