ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

外部ファイルを読み込む require_relative

require_relativeはカレントディレクトリから相対パスでファイルを読み込むメソッド。
require_relativeを使うと長いコードを別ファイルにすることができる。

目次


require_relativeについて

リファレンスマニュアル

Rubyリファレンスマニュアル
Kernelモジュール
モジュール関数 require_relative
https://docs.ruby-lang.org/ja/latest/class/Kernel.html

書式

require_relative 'ファイル名'


  • ファイル名のところで拡張子.rbは不要
  • ファイル名は相対パスで記入する


テストコード

実際にコードを書いて試す。
クラスとメソッドを定義するコードを別ファイルにして読み込む。

classregatta.rb

require 'date'

class Regatta
    def initialize
        @eventdate = Date.new(2018,05,17)
        @tournamentname = '全日本軽量級選手権'
        @venue = '戸田ボートコース'
    end

    def notice
        puts "レガッタのお知らせ"
        puts "大会名: #{@tournamentname}"
        puts "日時: #{@eventdate}"
        puts "場所: #{@venue}"
    end
end


notice.rb

require_relative 'classregatta'

regatta = Regatta.new
regatta.notice


階層

ruby_lesson
    |- classregatta.rb
    |- notice.rb

classregatta.rb、notice.rbともにruby_lessonディレクトリに配置。

コードの説明

classregatta.rb

  • Regattaクラスを定義する
    • class Regatta
  • newメソッドを定義する
    • def initialize
      • 年月日、大会名、場所を初期化する
  • noticeメソッドを定義
    • def notice
      • putsメソッドで初期化した内容を出力する


notice.rb

  • classregattaファイルを読み込む
    • require_relative
  • Regattaクラスのインスタンスをつくる
    • newメソッド
  • noticeメソッドを実行する


コードを実行する

ターミナル/PowerShellから次のコマンドを実行する。

ruby notice.rb


実行結果

レガッタのお知らせ
大会名: 全日本軽量級選手権
日時: 2018-05-17
場所: 戸田ボートコース


Regattaクラスの初期値がnoticeメソッドによって出力されている。
require_relativeでclassregatta.rbが呼び出された。


今回の動作確認環境
macOS 10.13.4
Ruby 2.4.4p296
ターミナル 2.8.2

Windows10 1709
Ruby 2.5.1p57 [x64-mingw32]
Windows PowerShell 5.1.16299.251