stupidedi: Incompatibility with factory_bot gem

If my rails project includes both stupidedi and factory_bot then rails console and rspec don’t work correctly. Trying to run a rails console leads to:

/Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:6:in `undef_method': undefined method `blank?' for class `FactoryBot::DefinitionProxy' (NameError)
Did you mean?  blank?
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:6:in `block in <class:DefinitionProxy>'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:5:in `each'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:5:in `<class:DefinitionProxy>'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:2:in `<module:FactoryBot>'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:1:in `<top (required)>'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot.rb:35:in `<top (required)>'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `require'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:81:in `block (2 levels) in require'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `each'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:76:in `block in require'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `each'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler/runtime.rb:65:in `require'
        from /Users/jeremy/.rvm/rubies/ruby-2.3.1/lib/ruby/site_ruby/2.3.0/bundler.rb:114:in `require'
        from /Users/jeremy/projects/tip_portal/config/application.rb:7:in `<top (required)>'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:156:in `require'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:156:in `require_application_and_environment!'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:77:in `console'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
        from /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/railties-5.0.6/lib/rails/commands.rb:18:in `<top (required)>'
        from bin/rails:9:in `require'
        from bin/rails:9:in `<main>'

Trying to run rspec leads to:

NameError:
  undefined method `present?' for class `FactoryBot::DefinitionProxy'
  Did you mean?  present?
                 presence
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:6:in `undef_method'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:6:in `block in <class:DefinitionProxy>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:5:in `each'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:5:in `<class:DefinitionProxy>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:2:in `<module:FactoryBot>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot/definition_proxy.rb:1:in `<top (required)>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/factory_bot-4.8.2/lib/factory_bot.rb:35:in `<top (required)>'
# ./config/application.rb:7:in `<top (required)>'
# ./config/environment.rb:2:in `require_relative'
# ./config/environment.rb:2:in `<top (required)>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# ./spec/rails_helper.rb:3:in `<top (required)>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
# ./spec/whenever/get_orders_on_day_spec.rb:1:in `<top (required)>'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in `load'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in `block in load'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
# /Users/jeremy/.rvm/gems/ruby-2.3.1@tip_portal/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in `load'

Removing either gem stops the error. Any idea why these two gems are incompatible?

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 18 (9 by maintainers)

Most upvoted comments

I think I have a high enough confidence that it’s related to the ruby version, since I can’t even replicate it on the same laptop when running the newer ruby version. If you want to dig further for your own satisfaction, that’s fine. But I will just use a workaround of a fork of the gem without the try and blank refinements. I’m recommending internally that our project upgrades to a newer ruby version and then we’ll be able to switch back to the mainline version of stupidedi.