Tapdance makes Object#tap
dance with nil
.
I mean it totally dances around nil
and doesn't execute a block argument
passed to nil#tap
so that you don't have to check for nil
inside of the
block passed to tap
.
It looks like this:
nil.tap do |yoda|
yoda.dance!
end
=> nil
Nope.
Add this line to your application's Gemfile:
gem 'tapdance'
And then execute:
$ bundle
Or install it yourself as:
$ gem install tapdance
Instead of writing this Ruby:
jedi = nil
jedi.tap do |yoda|
yoda && yoda.height = 1
end
=> nil
Or this Ruby on Rails (ActiveSupport):
jedi = nil
jedi.tap do |yoda|
yoda.try(:height, 1)
end
=> nil
To avoid this:
jedi = nil
jedi.tap do |yoda|
yoda.height = 1
end
NoMethodError: undefined method `height=' for nil:NilClass
You can now write this instead:
require "tapdance"
jedi = nil
jedi.tap do |yoda|
yoda.height = 1
end
=> nil
Yep, there's no height
method on yoda
. Probably because yoda
is nil
and
it would be weird if nothingness had a height, wouldn't it?
After checking out the repo, run bin/setup
to install dependencies. Then, run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
to create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
- Fork it ( https://github.com/olivierlacan/tapdance/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request