我使用的是telegram-bot
宝石。它有一个名为Telegram
的模块。我想扩展它以添加一种方法作为我最常见调用的快捷方式。如何要求一个已经存在于宝石上的模块?一种猴子补丁
我想要创建的方法是Telegram.send_message(text)
与我的默认配置。
对于这样我加入了telegram.rb
文件上app/models/telegram.rb
扩展了原来的模块:
module Telegram
def self.send_message(text, options={})
#...
end
end
如果在控制台上我运行Telegram.send_message
它说未定义的方法。如果我做require 'telegram'
的send_message
方法现在的工作,(我猜它不是自动加载的,因为是Telegram
模块调用已经(在创业板的一个)。现在,我想需要它的应用程序初始化,
我第一次尝试是添加需要我application.rb
但它说cannot load such file
,因为,我猜LOAD_PATH不包括app/models
呢。
我在哪里可以添加需要?
另一种方法是给它一个名称,如TelegramBot
。但我不喜欢Telegram
的想法d TelegramBot
。
其他替代方法是将其添加到initializers
而不是app/models
。但我认为该文件夹更适用于设置。
那么,做到这一点的最佳方法是什么?
感谢有关'extend'而不是猴子打补丁的建议,我只是读这个漂亮文章http://www.justinweiss.com/articles/3-ways-to-monkey-patch-without-making-a-mess/并做到了! –