Project

overrides

0.0
No commit activity in last 3 years
No release in over 3 years
Helps during refactoring (method renaming) to assure methods expected to be overriding another (and calling super) fail early during definition time instead of when called.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 1.3
~> 3.0
~> 10.1
 Project Readme

Overrides

An #overrides annotation for your (Ruby) methods.

Inspired by Java's @Override.

Install

$ gem install overrides

or add this line to your application's Gemfile (and bundle) :

gem 'overrides'

optionally add :require => 'overrides/for_all' to have overrides available in all classes/modules as a built-in (singleton) method.

Usage

Let's have a base class with Overrides pulled in :

class Message
  extend Overrides

  def self.deliver(msg); end

  def do_send; end
  def sent_at; end
  def reply?; end
end

a notice would be a message sub-type, note how overrides gets used :

class Notice < Message
  overrides
  def do_send; super; end

  def reply?; nil; end
  def sent_at; nil; end

  overrides :reply?, :sent_at
end

without args (before method) works with singleton methods as well :

class Notice < Message
  overrides
  def self.deliver(msg); end
end

NOTE: there's no global name-space pollution by default, thus you'll need to hook up the Overrides module (or extend Object to pull it in for all).

"Java"

Here's how you use it with JRuby to "annotate" method overrides :

require 'overrides/for_all'

class NonEmptyList < java.util.ArrayList

  def initialize
    super(); add nil
  end

  overrides
  def clear; super; add nil; end

  def isEmpty; false; end
  overrides :isEmpty

end

Copyright

Copyright (c) 2013 Karol Bucek. See LICENSE.txt (http://en.wikipedia.org/wiki/MIT_License) for details.