包括从单独的文件中的Ruby类(Including a Ruby class from a sepa

2019-06-24 06:21发布

有一段时间我已经包括一个Ruby模块的内部的整个类。 显然,这是不是我应该做的。 看来,一个模块的点是其然后可以被包括作为在一个新的类的方法存储的功能。

我不想这样。 我有我想保持我可以从其它文件访问一个单独的文件的类。 我怎样才能做到这一点?

谢谢。

Answer 1:

模块用于双重目的作为功能架和命名空间。 在模块保持的类是完全可以接受的。 为了把一个类在一个单独的文件,只是定义类像往常一样,然后,你要使用的类文件中,简单地把require 'name_of_file_with_class'在顶部。 举例来说,如果我定义的类Foofoo.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等。

由于红宝石版本1.9可以使用require_relative ,要求文件相对于正在编辑的文件。



Answer 2:

您还可以使用负载。 另外你使用,如果该文件是在同一目录需要相对的。 阅读这个环节做进一步的了解: http://rubylearning.com/satishtalim/including_other_files_in_ruby.html



文章来源: Including a Ruby class from a separate file