Search code examples
ruby-on-railsruby-on-rails-4mongoidrails-enginesforem

Install generator won't see a method I defined


I'm trying to use my Engine in another app to test the install generator and it seems to be failing. I haven't used my install generator for a long time, so I'm not sure when it broke (or if it ever truly smoothly worked). My project is based off radar/forem, so I tried to borrow a lot of their code (including the generator).

Edit: My installer works for the engines test/dummy but not in other apps. Why?

GH issue: https://github.com/NJayDevelopment/mongoid_forums/issues/16

Here is the log:

$ rails g mongoid_forums:install
What is your user class called? [User] 
What is the current_user helper called in your app? [current_user] 
Defining mongoid_forums_user method inside ApplicationController...
      insert  app/controllers/application_controller.rb
Adding mongoid_forums initializer (config/initializers/mongoid_forums.rb)...
      create  config/initializers/mongoid_forums.rb
(erb):5:in `template': undefined method `per_page' for MongoidForums:Module (NoMethodError)
The route is successfully added, however the initializer/mongoid_forums.rb is a blank file. The method is defined exactly how radar/forem does it, what could be the error?

Here is the relevant code:

Per page method definition: https://github.com/NJayDevelopment/mongoid_forums/blob/master/lib/mongoid_forums.rb#L33

Mattr accessor: https://github.com/NJayDevelopment/mongoid_forums/blob/master/lib/mongoid_forums.rb#L9

Initializer template: https://github.com/NJayDevelopment/mongoid_forums/blob/master/lib/generators/mongoid_forums/install/templates/initializer.rb

Install generator at error point: https://github.com/NJayDevelopment/mongoid_forums/blob/master/lib/generators/mongoid_forums/install_generator.rb#L47


Solution

  • Turns out when you try requiring mongoid_forums in pry, you'll see that an error involving decorators occurs. The issue is fixed here in my pull request to decorators: parndt/decorators#13

    It's because of the way files are required and how load! is called over there.

    Waiting on PR status, that is the same version that radar/forem uses as well.