Search code examples
ruby-on-railsrubyruby-on-rails-4koala

Calling a module's methods on a Gem's object?


I've generated an object via a ruby gem (Koala) and I've written a few modules with helper methods. What do I need to do in order to be able to use the methods within the modules on the object?

If I, model_object = Model.new, model_object will have access to all the instance variables but object does not (see below).

Ruby 2.1, Rails 4.1

config/application.rb - Autoloading modules in folder

config.autoload_paths << Rails.root.join('lib/module_folder')

Model

class Model < ActiveRecord::Base
   include Module
   include Module::Module2
   include Module::Module3

   def self.create_account(token)
      object = Module.module_class_method(token) #this works and generates the Koala object
      ERROR: object.module2_instance_method # Error: NoMethodError Exception: undefined method
   end
 end

Module

module Module
   extend ActiveSupport::Concern
end

Module2

module Module
    module Module2
        def module2_instance_method
        end
    end
end

SOLVED MYSELF - the issue was the include statements being within the class, if I moved them outside it worked.


Solution

  • Moved the include statements from inside to above the class declaration and all methods began to work. My assumption is that when they are within the statement they are only available to objects of that class.