Skip to content

ergo's behavior on nil isn't like tap #279

@benatkin

Description

@benatkin

This is a neat gem. I especially like how you can pull in just the modules you want.

According to the docs, ergo is like tap. But this example in nil deviates from tap's behavior:

nil.ergo{ |o| o.bar }    #=> nil

Whereas with tap:

2.2.4 :024 > { value: nil }.tap { |o| o[:value] = o[:value].bar }
NoMethodError: undefined method `bar' for nil:NilClass
        from (irb):24:in `block in irb_binding'
        from (irb):24:in `tap'
        from (irb):24
        from /Users/benatkin/.rvm/rubies/ruby-2.2.4/bin/irb:11:in `<main>'
2.2.4 :025 >

Perhaps mention this in the docs, and consider changing it in a future release? This could be surprising behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions