質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1916閲覧

requireする際のcannot load such fileエラー

hirome5

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/07/07 06:41

困っているエラーに関して

ファイル構成
ruby-book
|ーlib
|   |-fizz_buzz.rb
|ーtest
|-fizz_buzz_test.rb

minitestを使ってプログラムのテスト自動化の学習中、テストをfizz_buzzファイル内に書いて実行したところ表題のエラーを含むかなり長文のエラーが発生。(このエラーはターミナルを再起動させてしまったため、全文は不明)

覚えているのは、**activesupport (6.0.3.1)=> , (5.2.4.3) のようなログと表題のkernel_require.rb:92:in 'require':cannot load such file -- ./lib/fizz_buzz(LoadError)**という部分。

該当のソースコード

ruby

1fizz_buzz_rb 2 3def fizz_buzz(n) 4 if n % 15 == 0 5 "fizz buzz" 6 elsif n % 3 == 0 7 "fizz" 8 elsif n % 5 == 0 9 "buzz" 10 else 11 n.to_s 12 end 13end

ruby

1fizz_buzz_test.rb 2 3require 'minitest/autorun' 4require './lib/fizz_buzz' 5 6class FizzBuzzTest < Minitest::Test 7 def test_fizz_buzz 8 assert_equal '1', fizz_buzz(1) 9 assert_equal '2', fizz_buzz(2) 10 assert_equal 'fizz', fizz_buzz(3) 11 assert_equal '4', fizz_buzz(4) 12 assert_equal 'buzz', fizz_buzz(5) 13 assert_equal 'fizz', fizz_buzz(6) 14 assert_equal 'fizz buzz', fizz_buzz(15) 15 end 16end 17

試したこと

最初、fizz_buzz.rb内にfizz_buzz_test.rbのコードを書いてエラー発生したため、qiitaの記事を参考にしてfizz_buzz.rbを実行する際に--no-pluginsのオプションをつける。
するとテストが成功したので、冒頭のファイル構造のようにファイルを分けて管理。

テスト実行すると**activesupport (6.0.3.1)=> , (5.2.4.3) のようなログと表題のkernel_require.rb:92:in 'require':cannot load such file -- ./lib/fizz_buzz(LoadError)**と同様のエラー発生のため、

対策としてbundle initでruby-bookディレクトリ下にgemfile作成。
最下部にgem 'minitest'と記載して保存。
bundleしてbundle exec ruby fizz_buzz_test.rb実行するも
**Traceback (most recent call last):
1: from fizz_buzz_test.rb:2:in <main>' fizz_buzz_test.rb:2:in require': cannot load such file -- ./lib/fizz_buzz (LoadError)**が解決せず。

補足情報

*** LOCAL GEMS ***

actioncable (6.0.3.1, 5.2.4.3, 5.2.3)
actionmailbox (6.0.3.1)
actionmailer (6.0.3.1, 5.2.4.3, 5.2.3)
actionpack (6.0.3.1, 5.2.4.3, 5.2.3)
actiontext (6.0.3.1)
actionview (6.0.3.1, 5.2.4.3, 5.2.3)
activejob (6.0.3.1, 5.2.4.3, 5.2.3)
activemodel (6.0.3.1, 5.2.4.3, 5.2.3)
activerecord (6.0.3.1, 5.2.4.3, 5.2.3)
activestorage (6.0.3.1, 5.2.4.3, 5.2.3)
activesupport (6.0.3.1, 5.2.4.3, 5.2.3)
(中略)
rails (6.0.3.1, 5.2.4.3, 5.2.3)
ruby 2.6.6p146 (2020-03-31 revision 67876)

エラー全文が不明なまま質問して申しわけございませんが、皆様のお知恵を拝借して問題解決したく存じます。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

投稿2020/07/07 06:46

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2020/07/07 06:51 編集

補足すると、 requireは実行時のカレントディレクトリに依存するので カレントディレクトリがどこになるかが不明瞭な場合は require_relativeもしくは require File.expand_path('../lib/fizz_buzz', __FILE__) などを使った方が確実です。
hirome5

2020/07/07 06:57

早急なご回答ありがとうございます。既に同様の質問が上がっている内容だったのですね。失礼いたしました。また、補足情報までご教示いただきありがとうございます! require '../lib/fizz_buzz'も、require_relative '../lib/fizz_buzz'のいずれでもtestが通りました。 今後ともよろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問