外部ファイルを読み込む 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
- 年月日、大会名、場所を初期化する
- def initialize
- noticeメソッドを定義
- def notice
- putsメソッドで初期化した内容を出力する
- def notice
notice.rb
コードを実行する
ターミナル/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