(J) Ruby - безопасный способ переопределения основных классов? - PullRequest
0 голосов
/ 10 марта 2011

Какой безопасный способ переопределить методы в основных классах, таких как File, String и т. Д. Я ищу реализацию чего-то похожего на Java Security Manager в (J) Ruby.

Я ищу способ переопределить метод, сначала посмотрев, какой класс / скрипт вызвал этот метод, и если этот класс / скрипт принадлежит списку некоторых занесенных в черный список классов (которые я отслеживаю), я хочу поднять исключение, если вызывающий класс принадлежит классу, не занесенному в черный список, тогда разрешите операцию. что-то вроде:

class String
  alias_method :old_length, :length

  def length
    if(#nowHowDoIGetTheCallingClass)
      raise "bad boy"
    else
      old_length
  end
end

Я пробовал это в JRuby, но это работает только альтернативно. Один раз вызывается новый метод длины, а в следующий раз вызывается старый метод длины. Я думаю, alias не работает должным образом в JRuby! >. <</p>

1 Ответ

0 голосов
/ 10 марта 2011

Если что-то работает иногда, но не в других случаях, проблема скорее в вашем коде, а не в JRuby. Выбор не нарушен

...