How can I dynamically add a method to a Math class in Ruby on Rails?

I am trying to add the following method to a Math class in Ruby on Rails:

class Math
  def self.round_with_precision(number, precision)
    scalar = 10.0 ** precision
    number = number * scalar
    number = number.round
    number = number / scalar
    return number;
  end
end

      

Then I added the following to my environment. rb:

require 'lib/math'

      

When I open the Rails console I get the following error: './lib/math.rb:2:TypeError Math is not a class'

I seem to be missing something very simple.

Any thoughts?

Thanks in advance for your help.

+1


source to share


3 answers


Math is a module, just rename the class to module.



+9


source


You can put the file containing this code in config / initializers and it will be automatically included. ~ Just FYI.



+2


source


If you are using instance_eval

, you do not need to worry about whether to use class

or module

:

Math.instance_eval do
  def round_with_precision(number, precision)
    scalar = 10.0 ** precision
    (number * scalar).round / scalar
  end
end

      

0


source







All Articles