包含来自单独文件的Ruby类

时间:2009-06-26 19:14:28

标签: ruby class module

有一段时间我在Ruby模块中包含了一个完整的类。显然这不是我应该做的。似乎模块的要点是存储函数,然后可以将这些函数作为方法包含在新类中。

我不想要这个。我有一个类,我想保存在一个单独的文件中,我可以从其他文件访问。我怎么能这样做?

感谢。

3 个答案:

答案 0 :(得分:59)

模块作为函数的持有者和命名空间提供双重用途。将模块保存在模块中是完全可以接受的。要将类放在单独的文件中,只需像往常一样定义类,然后在要使用该类的文件中,只需将require 'name_of_file_with_class'放在顶部即可。例如,如果我在Foo中定义了类foo.rb,则在bar.rb中我会有require 'foo'行。

如果您使用的是Rails,那么这种情况经常会自动发生

编辑:澄清文件布局

#file: foo.rb
class Foo
  def initialize
    puts "foo"
  end
end

...

#file: bar.rb
require 'foo'

Foo.new

如果您在Rails中,请将这些类放在lib/中,并使用命名约定来获取类名的小写下划线版本的文件,例如: Foo - > foo.rbFooBar - > foo_bar.rb等等。

从ruby版本1.9开始,您可以使用require_relative来相对于您正在编辑的文件要求文件。

答案 1 :(得分:0)

您也可以使用加载。如果文件位于同一目录中,也可以使用require relative。请阅读此链接以进一步了解:http://rubylearning.com/satishtalim/including_other_files_in_ruby.html

答案 2 :(得分:0)

使用Require时,字符串中的内容表示您要引用的类的完整路径名,除非它在Ruby的根文件夹中