Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
  example
  lib
  spec
  .gitignore
  .rspec
  .ruby-version
  .travis.yml
  Gemfile
  LICENCE
  README.md
  Rakefile
  benchmark.rb
  memoist2.gemspec
Size: Mime:
  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

  • Memoist is quite complicated

  • Memoist has the exact same api as ActiveSupport::Memoizable

  • Memoist2 only works on Ruby >= 2.0.0

  • Memoist2 is deliberately much simpler

  • Memoist2 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.