包含来自单独文件的Ruby类

use*_*154 38 ruby module class

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

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

谢谢.

Ben*_*hes 62

模块作为函数的持有者和命名空间用于双重目的.将模块保存在模块中是完全可以接受的.要将一个类放在一个单独的文件中,只需像往常一样定义该类,然后在您希望使用该类的文件中,只需将其放在require 'name_of_file_with_class'顶部即可.举例来说,如果我定义的类Foofoo.rb,在bar.rb我将不得不行require 'foo'.

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

编辑:澄清文件布局

#file: foo.rb
class Foo
  def initialize
    puts "foo"
  end
end
Run Code Online (Sandbox Code Playgroud)

...

#file: bar.rb
require 'foo'

Foo.new
Run Code Online (Sandbox Code Playgroud)

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

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

  • 也许为Ruby 1.9的'require_relative'添加一些信息会很好,因为代码不适用于这个版本. (9认同)
  • @boutta感谢您的1.9澄清,这解决了我的问题. (2认同)