views:

390

answers:

3

I am trying to add the following method to the 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

I then added the following to my environment.rb:

require 'lib/math'

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

It seems like I'm overlooking something very simple.

Any thoughts?

Thanks in advance for your help.

+8  A: 

Math is a module, just rename class to module.

Pedro Henriques
Thanks, that did the trick!
JP
+2  A: 

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

Matt Darby
I didn't know that, thanks for the tip!
JP
You're welcome ;)
Matt Darby
A: 

If you use instance_eval, you don't have 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
Zach Langley