如何在命令行应用程序中扩展String类?

时间:2013-11-23 21:10:52

标签: ruby-on-rails ruby

我主要在Rails工作,我正在使用命令行数据转换gem,“Mongify”,我对如何在Ruby cli应用程序中扩展核心类感到困惑。

我想用.is_date?方法扩展String类,以检查字符串是否可以转换为Date。我已经在Rails控制台中使用了它,

我使用以下内容向string.rb添加了lib/ext个文件;

class String
  def is_date?
    begin
      return true if Date.parse(self)
      rescue
        #do nothing
    end
    return false
  end
end

然后在Rails控制台中我执行require 'ext/string'它会起作用。 但我无法弄清楚如何让它在Mongify cli应用程序中运行。我将string.rb复制到gem的lib文件夹中,我尝试将require 'string'添加到gem中的许多不同文件中,但我不断收到undefined method个错误。
有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

你如何从lib/mongify.rb那样需要它:

require 'string/extensions.rb'

然后将您的代码放入lib/string/extensions.rb

如果不是解决方案,请告诉我们您遇到的确切undefined method错误。

答案 1 :(得分:1)

帮助您完成调试练习,为您提供所需的答案。首先在函数调用的位置之前放置一个断点。

在调试器中,加载所需的文档,然后在调用发生后跳过断点到下一个断点。

一旦你有了这个工作,然后在堆栈跟踪的早期开始 - 在一个之前加载的文件中。继续向后移动,直到你在gem的加载过程中得到足够早的部分,并使它成为你加载代码的地方。