1. ホーム
  2. ruby-on-rails

[解決済み] テスト環境でRailsコンソールを実行し、test_helper.rbを読み込むには?

2022-07-22 20:28:43

質問

背景を教えてください。Thoughtbot の "Factory Girl" gem で、ユニット テストやその他のテストで使用するオブジェクトを作成するために使用する、いくつかの問題があります。コンソールでファクトリーガールのさまざまな呼び出しを実行して、何が起こっているかをチェックしたいのです。たとえば、次のようなことを行ってみたいと思います。

>> Factory(:user).inspect

異なる環境でコンソールを実行できることは知っていますが......。

$ script/console RAILS_ENV=test

しかし、これを実行するとFactoryクラスが利用できなくなります。見た目は test_helper.rb が読み込まれていないように見えます。

いろいろな require への絶対パスを指定したものなど、様々な呼び出しを試してみました。 test_helper.rb を呼び出すこともできますが、これと同じように失敗します。

$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
  Errno::ENOENT: No such file or directory - 
  /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb

Grr. Argh.

どのように解決するのですか?

Rails 3.0の場合

実行 script/console --help . 構文が script/console [environment] であり、あなたの場合は script/console test .

テストヘルパーを要求しなければならないのか、それともテスト環境がそうしてくれるのかは分かりませんが、このコマンドで少なくともテスト環境に正常に起動できるはずです。

余談ですが、script/ にあるさまざまなバイナリが rails 環境を設定する方法が異なるのは、確かにちょっと奇妙です。

Rails 3 と 4 の場合

実行 rails c test . プリペンド bundle exec を付加してください。

Rails 5および6用

実行 rails console -e test .