Как я могу динамически добавить метод в класс Math в Ruby on Rails? - PullRequest
1 голос
/ 08 января 2009

Я пытаюсь добавить следующий метод в класс Math в 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

Затем я добавил в свою среду следующее:

require 'lib/math'

Когда я открываю консоль Rails, я получаю следующую ошибку: './lib/math.rb:2:TypeError Math не является классом'

Кажется, я упускаю что-то очень простое.

Есть мысли?

Заранее спасибо за помощь.

Ответы [ 3 ]

9 голосов
/ 08 января 2009

Math - это модуль, просто переименуйте класс в модуль.

2 голосов
/ 08 января 2009

Вы можете поместить файл, содержащий этот код, в config / initializers, и он будет автоматически включен. ~ Просто к вашему сведению.

0 голосов
/ 09 января 2009

Если вы используете instance_eval, вам не нужно беспокоиться о том, использовать ли class или module:

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