require と require_relative

  • クラスやモジュールを別のファイルに定義しておき、読み込む仕組み
|_ main.rb
|_ partial.rb
  • 上記のファイル構成を例とした場合
# partial.rb
module AddCream
  def add_cream
    @name += " with cream"
  end
end
# main.rb
require_relative "partial"

class Drink
  include AddCream
  def initialize(text)
    @name = text
  end
  def name
    @name
  end
end

drink = Drink.new("coffee")
drink.add_cream
p drink.name

require_relativerequire の違い

  • require_relative の代わりに require を使うこともできる
require_relative "partial"

# ↑↓ 等価

require "./partial"
  • require には別の使い方もある
  • 別ファイルの読み込みには require_relative を使うのがおすすめ

includerequire_relative の違い

  • require_relativeinclude は、「読み込む」という点で似ているが機能が違う
    • include
      • モジュールに書かれたメソッドをクラスから利用できるようにするメソッド
    • require_relative
      • ファイル名を渡して、そのファイルに定義されたクラスやモジュールを使えるようにするメソッド
  • セットで使うことが多いが、機能が違う