Nihilist
Nigilist Ruby gem — Null Object for User model in your app
Install / Use
/learn @aishek/NihilistREADME
Nigilist
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 😉
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
