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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

231閲覧

Railsのコントローラーのテストでのエラー

koume

総合スコア458

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

1グッド

0クリップ

投稿2017/07/13 04:30

Railsアプリケーションプログラミングを学習しながら作っていますが、コントローラーのテストを実行使用としたらエラーが出て解決出来ずに困っております。実行したコードは下記になります。

[vagrant@localhost strikeback]$ bin/rails test test/controllers/articles_controller_test.rb

エラーの内容は下記になります。

/home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railties-5.1.1/lib/ rails/test_unit/test_requirer.rb:14:in `require': cannot load such file -- /home /vagrant/strikeback/test/controllers/articles_controller_test.rb (LoadError) from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railti es-5.1.1/lib/rails/test_unit/test_requirer.rb:14:in `block in require_files' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railti es-5.1.1/lib/rails/test_unit/test_requirer.rb:13:in `each' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railti es-5.1.1/lib/rails/test_unit/test_requirer.rb:13:in `require_files' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railti es-5.1.1/lib/rails/test_unit/minitest_plugin.rb:96:in `plugin_rails_init' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/minite st-5.10.2/lib/minitest.rb:81:in `block in init_plugins' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/minite st-5.10.2/lib/minitest.rb:79:in `each' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/minite st-5.10.2/lib/minitest.rb:79:in `init_plugins' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/minite st-5.10.2/lib/minitest.rb:130:in `run' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railti es-5.1.1/lib/rails/test_unit/minitest_plugin.rb:77:in `run' from /home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/minite st-5.10.2/lib/minitest.rb:63:in `block in autorun'

loadErrorと出ているので読み込めないということなのかと思っていますが、解決方法がわからずに困っております。
このエラーについての解決方法を教えていただけないでしょうか?宜しくお願いします。

TennousuAtene👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

/home/vagrant/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/railties-5.1.1/lib/
rails/test_unit/test_requirer.rb の14行目の`require'が認識されていないようです。

投稿2017/07/13 05:08

TennousuAtene

総合スコア76

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

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

koume

2017/07/13 06:43

回答ありがとうございます。ご指摘の 'require'を認識させるにはどうすればいいのでしょうか? 自力では、全く歯がたたずに困っております。ご指導のほど宜しくお願いします。
TennousuAtene

2017/07/13 06:47 編集

requireメソッドには2種類あるので紹介させていただきます。 require Ruby の組込み関数。正確には、Kernelモジュールのメソッド。 引数で渡された .rb ファイルなどを読み込む。ただし、既に読み込み済みのファイルは読み込まない。 読み込まれたモジュールは$", $LOADED_FEATURESに格納されて管理される。 require_dependency Rails が定義した独自のメソッド。activesupport/lib/active_support/dependencies.rbで定義されている。 引数で渡された .rb ファイルなどを読み込む。ただし、既に読み込み済みのファイルは読み込まない。development モードで実行している場合はloadを使って読み込まれる。production モードで実行している場合は、requireを使って読み込まれる。 これは、development モードで実行している場合は、動的にファイルを何度も読み込む必要があるため。 となっています。もしかしたらrequire_dependencyで指定した方がいいのかも知れません。
koume

2017/07/13 07:55

回答ありがとうございます。奥の深い内容でとても勉強になりました。ところで、モデルのテスト時には このようなエラーは出ないですんなり進めてこれたのですが、コントローラーのテストでいきなり最初に requireが認識されないというのは何が原因なのでしょうか?
TennousuAtene

2017/07/13 08:37 編集

requireするパスにカレントディレクトリを示すドットを打つと回避できるかもしれません。 hoge.rbがあるとする。中身はこんな感じ。 puts 'hoge!' 同じディレクトリにapp.rbがあるとする。中身はこんな感じ。 require 'hoge.rb' app.rbを実行すると、Ruby 1.8.7ではこう。期待通り。 $ ruby app.rb hoge! けど、Ruby 1.9.2ではロードパスにカレントディレクトリが含まれなくなったので、以下のようなエラーになる。 $ ruby app.rb <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- hoge.rb (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' from app.rb:1:in `<main>' app.rbのrequireでカレントディレクトリを示すドットを打つことで、Ruby 1.9.2でも正常にrequireを実行できるようになる require './hoge.rb' です。
koume

2017/07/13 09:11

回答ありがとうございます。Ruby2.2.7 で Rail5.1.1 の環境でやっているのですがそれの影響でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問