Ruby on rails 如何在ruby中扩展子类?

Ruby on rails 如何在ruby中扩展子类?,ruby-on-rails,ruby,object,extend,Ruby On Rails,Ruby,Object,Extend,我在gem中定义了一个类 Diff::LCS 我想给它添加一些方法,所以我想我会扩展它 现在,我通过定义: Object.rb中的类对象(在rails项目的库/文件夹中) 现在,我的文件在哪里 class Diff::LCS(试图扩展它) 名为diff_lcs.rb,同样在lib/中 我是否需要匹配与gem相同的文件夹结构才能正确扩展它 如何扩展Class::SubClass 编辑:添加代码 test/unit/diff_lcs_test.rb: #tests lib/diff_lcs.rb

我在gem中定义了一个类

Diff::LCS
我想给它添加一些方法,所以我想我会扩展它

现在,我通过定义:
Object.rb中的类对象(在rails项目的库/文件夹中)

现在,我的文件在哪里

class Diff::LCS
(试图扩展它)
名为diff_lcs.rb,同样在lib/中

我是否需要匹配与gem相同的文件夹结构才能正确扩展它

如何扩展Class::SubClass

编辑:添加代码
test/unit/diff_lcs_test.rb:

#tests lib/diff_lcs.rb
require "test/unit"
require 'diff/lcs'
require 'diff/lcs/string'
require File.expand_path(File.dirname(__FILE__) + "/../../lib/diff_lcs")
# require '../../lib/diff_lcs.rb'
class DiffLCSTest < Test::Unit::TestCase

  def correctly_display_inlineness
    @source_text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit..."
    @new_text = "lorem ipsUm sit [amet]!, COnsectetur adipisicing elit i have no idea what I'm doing..."
    return false
  end
end
错误:

> bundle exec ruby test/unit/diff_lcs_test.rb
$ APP_PATH/lib/diff_lcs.rb:1: LCS is not a class (TypeError)
你的意思是“重新打开”这个类(而不是扩展)?如果是这样的话,你应该能够完全按照你刚才说的去做

class Diff::LCS
  def my_new_method
    ...
  end
end
但是,您必须注意装载顺序。如果在加载原始Diff:LCS类之前加载了编写上述代码的位置,则不会重新打开,而是实际定义该类

……啊,重读你的问题。您正在尝试找出将此文件放入其中的文件的名称。以前,您依赖rails的默认命名约定(例如Object.rb中的对象),但不必这样做。实际上,只要您手动将其加载到environment.rb(在Rails2中)(或者我认为application.rb用于Rails3中)中(使用
包括“whatever\u library.rb”
),您就可以将其称为“whatever\u library.rb”


如果您必须使用rails默认值,那么是的,创建一个名为“diff”的目录,并在其中将代码放入“lcs.rb”文件。

您所需要做的就是重新打开类,就像您正在做的那样(假设这是正确的类名)


但是,您确实需要确保包含/需要该库。(具体取决于Rails版本。)

为什么说LCS不是一个类?也许一旦我弄明白了,这一切都会一起消失。因为它在ALLCAPS中。。。这是一个常量的红色,而不是类名。类名在CamelCasezomg中。。。那太尴尬了。是的。。改成驼色就解决了。o、 o=(@TheLindyHop就像我说的——假设它是正确的类名;)
class Diff::LCS
  def my_new_method
    ...
  end
end