129

背景:Thoughtbotの「FactoryGirl」gemに問題があり、ユニットやその他のテストで使用するオブジェクトを作成するために使用されます。コンソールに移動して、さまざまなFactory Girl呼び出しを実行して、何が起こっているかを確認したいと思います。たとえば、私はそこに行きたいです...

>> Factory(:user).inspect

さまざまな環境でコンソールを実行できることを知っています...

$スクリプト/コンソールRAILS_ENV=test

しかし、そうすると、ファクトリクラスは利用できなくなります。ロードされていないように見えます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。ああ。

4

10 に答える 10

207

Rails<3.0の場合

を実行しますscript/console --help。構文がであることに気付くでしょう。script/console [environment]あなたの場合はscript/console testです。

テストヘルパーが必要かどうか、またはテスト環境で必要かどうかはわかりませんが、そのコマンドを使用すると、少なくともテスト環境で正常に起動できるはずです。

補足として:script /のさまざまなバイナリが、レール環境を設定するさまざまな方法を持っているのは、確かに奇妙なことです。

Rails3および4の場合

を実行しますrails c testbundle exec現在のアプリ環境でこれが必要な場合は、追加します。

Rails5および6の場合

を実行しますrails console -e test

于 2009-06-26T16:36:15.130 に答える
61

Rails 3では、rails console testまたはrails console productionまたはrails console development(これがデフォルトです)を実行します。

于 2011-07-08T20:57:28.197 に答える
11

Rails 5.2.0の場合:「環境の名前を通常の引数として渡すことは非推奨であり、次のRailsバージョンで削除されます。代わりに-eオプションを使用してください。」

rails c -e test
于 2018-11-03T02:30:44.987 に答える
10
script/console test

必要なのはそれだけです。

于 2009-06-26T18:24:06.717 に答える
4

consoleコマンドが動作する環境を指定できます。

rails c [environment]

1)ステージング用

rails c staging

2)生産用

rails c production

ソースと詳細な説明: Railsコマンドライン

于 2016-09-19T07:45:38.130 に答える
3

デビッド・スミスは正しいです、ただしてください

script/console test

ヘルプコマンドは、これが機能する理由を示します。

$ script/console -h
Usage: console [environment] [options]
    -s, --sandbox                    Rollback database modifications on exit.
        --irb=[irb]                  Invoke a different irb.
        --debugger                   Enable ruby-debugging for the console.

それは[環境]ビットです。

于 2011-02-09T19:44:26.963 に答える
2

私はアスカーの痛みを共有します。ここには実際に3つの個別の質問があり、そのうちのいくつかは対処され、いくつかはそうではありません。

  1. テスト環境でコンソールをどのように起動しますか?

    最近のRailsバージョンの場合bundle exec rails c test、、、またはその代替構文。

  2. test / test_helper.rbがそのコンソールセッションにロードされていることをどのように確認しますか?

    何かrequire './test/test_helper'がそれをするべきです。

    私の場合、これはtrueを返します。これは、コンソールを起動したときにまだロードされていないことを示しています。そのステートメントがfalseを返した場合は、数回のキーストロークを無駄にしただけですが、それでも問題はありません。

  3. test_helperがロードされたら、その中で定義されているメソッドをどのように呼び出しますか?

    通常のtest_helperでは、カスタムメソッドは通常、ActiveSupport::TestCaseのインスタンスメソッドとして定義されます。したがって、それらの1つを呼び出したい場合は、そのクラスのインスタンスが必要です。試行錯誤により、ActiveSupport :: TestCase.newには必須パラメーターが1つあるので、それを何か渡します。

    test_helperにcreate_userというメソッドがある場合は、次のように呼び出すことができます。 ActiveSupport::TestCase.new("no idea what this is for").create_user

于 2017-05-19T19:15:45.200 に答える
1

GEMをインストールし、environment.rbまたはtest.rbファイルのいずれかに次の行を追加したことを確認してください。

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
于 2009-06-26T16:54:23.457 に答える
0

テスト環境

rails console test # or just rails c test

開発環境

rails console # or just rails c
于 2016-04-14T07:30:00.177 に答える
0

Railsコンソールのテスト環境を実行するコマンドは

rails c -e test

また

RAILS_ENV=test rails c

あなたが次のような問題に直面している場合

ActiveRecord::StatementInvalid:
   Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`

次に、最初に実行してテストDBを準備する必要があります

bundle exec rake db:test:prepare
于 2019-04-18T11:07:21.107 に答える