Я определил помощник Синатры обычного способа:Monkeypatching от помощника Синатра
module Sinatra
module FooHelper
# code goes here
end
end
В моем помощнике, между прочим, я хотел бы добавить метод Numeric
:
module Sinatra
module FooHelper
class ::Numeric
def my_new_method
end
end
end
end
Однако, в интересах ненавязчивости, я хочу только добавить этот метод, если мой помощник Sinatra фактически включен в приложение; если никто не работает helpers Sinatra::FooHelper
, я не хочу ничего влиять (что кажется разумным ожиданием от расширения Sinatra).
Есть ли какой-либо крючок, который был запущен, когда включен мой помощник, который позволит мне добавить мой метод только один раз, когда это произойдет?
Может кто-нибудь «потребует» это, а затем не использовать его? – iain
@ iain возможно, что они могут включать его в одну часть модульного приложения Sinatra, но не в другом - я понимаю, что это не совсем самая лучшая вещь в мире, но я бы хотел написать как можно более чистое расширение/практично. –
Если вы собираетесь это сделать, я бы сказал, почему бы не использовать метод класса? Нет исправления, может возвращать тот же тип, легко понять, в конечном счете, намного чище. Бит более уродливый, хотя :) – iain