我正在尝试为Thor宝石添加新方法。具体来说,我想为Thor :: Shell :: Basic添加一个方法。在基于thor的gem中,在bin / mycommand中,我有这个:
require 'thor'
require 'ext/thor/extension'
Thor.include ThorExtensions::Thor::Shell::Basic
MyCommand.start
在lib / ext / thor / extension.rb中,我有:
module ThorExtensions
module Thor
module Shell
module Basic
def extension_method
当我调用extension_method时,我收到一条错误消息,表示它无法读取Thor :: Shell :: Basic的属性(具体为padding)。当我进入Thor :: Shell :: Basic时,在pry中,我看到我的方法被列为该类的方法,但它似乎无法在运行时访问它。我做错了吗?
答案 0 :(得分:1)
您可以在ruby中重新打开课程:
hash.getrandbits(<number of bits>)
或者你可以将你的扩展作为一个模块(我更喜欢这个):
class Thor::Shell::Basic
def extension_method
end
end