Project

nigilist

0.01
No release in over 3 years
Low commit activity in last 3 years
After include Nigilist module all ?-ends methods will return false, all non-!-ends methods will return nil.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16.1
~> 2.4.9
~> 5.11.3
~> 12.3.0
 Project Readme

Nigilist

Gem Version Build Status Code Climate

Nigilist is extremely useful for implement Null Object pattern. It allows null object to return false for all question-methods, nil for all non-bang-methods, [] for all methods in plural form (and in Ruby on Rails null-relation for same name ActiveRecord model) without defining them.

Installation

gem install nigilist

Usage

class Order < ActiveRecord::Base
end

class Guest
  include Nigilist

  def polite?
    true
  end

  def locale
    'ru'
  end
end

current_user = Guest.new
current_user.admin?  # false — for all question methods
current_user.polite? # true — becase it is explicit defined
current_user.orders  # Order.none — for all plural methods because same singular name ActiveRecord model exists
current_user.planets # [] — for all plural methods without because singular name ActiveRecord model doesn't exists
current_user.address # nil — for all non question, non plural and non bang methods
current_user.locale  # 'ru' — becase it is explicit defined

Explanation of Null Object pattern

For example, you have a User model, with #admin? method, and Guest model allows you use same interface for both authorized and unauthorized users like so:

class Guest
  def admin?
    false
  end
end

current_user = current_session.user || Guest.new
current_user.admin?

So when your project grows and other methods got it place inside User model you have to define same methods in Guest model which contains no logic but only return false or nil. In that case Nigilist could be helpful.

License

Nigilist is free software, and may be redistributed under the MIT License.

Contributors

The gem about one method

The gem contains exactly one module with one method defined: method_missing. I'm sure you able to implement it by yourself in couple of minutes. So feel free just to copy it from lib/nihilist.rb 😉