Подтвердить что ты не робот

Включение класса Ruby из отдельного файла

Некоторое время я включил целый класс внутри модуля Ruby. По-видимому, это не то, что я должен делать. Похоже, что точкой модуля является хранение функций, которые затем могут быть включены как методы в новый класс.

Я не хочу этого. У меня есть класс, который я хочу сохранить в отдельном файле, доступ к которому я могу получить из других файлов. Как я могу это сделать?

Спасибо.

4b9b3361

Ответ 1

Модули служат двойной целью как держатель для функций и как пространство имен. Сохранение классов в модулях вполне приемлемо. Чтобы поместить класс в отдельный файл, просто определите класс как обычно, а затем в файле, в котором вы хотите использовать класс, просто поместите 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/ и используйте соглашение об именах для файлов строчной подчеркнутой версии имени класса, например. Foofoo.rb, FooBarfoo_bar.rb и т.д.

В версии ruby ​​версии 1.9 вы можете использовать require_relative, чтобы требовать файлы относительно файла, который вы редактируете.

Ответ 2

Вы также можете использовать нагрузку. Также вы используете требует относительный, если файл находится в том же каталоге. Прочитайте эту ссылку для дальнейшего понимания: http://rubylearning.com/satishtalim/inclusive_other_files_in_ruby.html

Ответ 3

При использовании Require в строке указывается полный путь к классу, на который вы ссылаетесь, если только он не находится в корневой папке Ruby.