Skip to content

FactoryBot incompatibility - consider renaming code on main object  #58

@mculp

Description

@mculp

I’m running into an incompatibility issue with irbtools because of the way FactoryBot uses method_missing.

When you define a factory with an attribute code, it tries to call the code defined on the main object by irbtools.

I realize that’s not exactly the fault of irbtools, but it seems like in order to maintain compatibility with application code, that any method defined on the main object should have a pretty unique name.

None of the methods defined would be 100% compatible in all use cases, but I guess the point I’m trying to make is that code is a very, very common attribute name. Similar to defining a top-level method called name or id.

Pry uses show-source (not exactly sure how they use a -) for a similar feature.

Something like show_code would be less likely to be incompatible.

Here’s the relevant part of the stacktrace:

~/.gem/ruby/3.2.2/gems/irbtools-4.0.9/lib/irbtools/libraries.rb:59:in `code': wrong number of arguments (given 0, expected 1..2) (ArgumentError)
        from ~/app/lib/factories/address_factory.rb:11:in `block (2 levels) in <main>'
        from ~/.gem/ruby/3.2.2/gems/factory_bot-6.2.1/lib/factory_bot/syntax/default.rb:18:in `instance_eval'

With a standard defined factory:

FactoryBot.define do
  factory :address do
    code { "123" }
  end
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions