Ruby Module Method Access

前端 未结 3 1977
野的像风
野的像风 2021-01-31 17:01

I have a ruby module for constants. It has a list of variables and 1 method which applies formatting. I can\'t seem to access the method in this module. Any idea why?

相关标签:
3条回答
  • 2021-01-31 17:32
    module Foo
      def self.hello # This is a class method
        puts "self.hello"
      end
    
      def hello # When you include this module, it becomes an instance method 
        puts "hello"
      end
    end
    
    Foo.hello #=> self.hello
    
    class Bar
      include Foo
    end
    
    Bar.new.hello #=> hello
    
    0 讨论(0)
  • 2021-01-31 17:51

    Generally, with modules, these things should be happening :

    -> Autoload path in application.rb, add line :

    config.autoload_paths += %W(#{config.root}/lib)
    

    -> Place module in /lib

    -> Include module with 'include NAMEOFMODULE'

    (If module has an underscore like game_engine, you need to 'include GameEngine')

    0 讨论(0)
  • 2021-01-31 17:54

    If you include the module the method becomes an instance method but if you extend the module then it becomes a class method.

    module Const
      def format
        puts 'Done!'
      end
    end
    
    class Car
      include Const
    end
    
    Car.new.format # Done!
    Car.format # NoMethodError: undefined method format for Car:Class
    
    class Bus
      extend Const
    end
    
    Bus.format # Done!
    Bus.new.format # NoMethodError: undefined method format
    
    0 讨论(0)
提交回复
热议问题