RailsコンソールでFactoryGirlのファクトリーを使用する方法


90

開発環境でRailsコンソールを使用していて、ファクトリーを使用したい。どうすればそれらにアクセスできますか?

私が試してみましたrequire "FactoryGirl"どのリターン

1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl

シンプルな Googleのいくつかの結果に、検索リード。これらを試しましたか?彼らは働いていませんか?これまでに何を試しましたか?
wpp

1
これらはすべてテスト段階にあります。開発中に実施したいと思います
Eric Baldwin

2
FactoryGirl定数を要求するのではなく、require 'factory_girl'から始めたいと思うでしょう。
Rob Dawson

1
現在の時間に合わせて調整-開始してからrails c次の操作を行うことができますrequire 'factory_bot'
RudyOnRails

回答:


39

この問題を解決するには、ファクトリボットgemがGemfileで次のように指定されていることを確認してください

group :development, :test do
  gem 'factory_bot_rails'
end

その後bundle install

これにより、FactoryBotクラスが開発コンソールで使用できるようになります。

お役に立てれば。


2
代わりに、このようにgemfileにFactoryGirlを追加するgem 'factory_girl_rails', :require => falseと、開発環境を最初からセットアップしようとするとエラーが発生しますので、注意してください。
エピジェネ

4
この答えは機能しますが、受け入れられた答えはであるはずですrails console test。これにより、テスト環境でコンソールを作成できるため、開発環境でテストパッケージを使用するためにGemfileを更新する必要がなくなります
Dylan Pierce

195

私はこれを次の方法で行います:

  • サンドボックスモードのテスト環境でRailsコンソールを起動します。

    rails console -e test --sandbox

これが必要な理由は2つあります。

  1. 行った変更はすべてロールバックされます。
  2. シードデータが既にある場合、ファクトリが属性のシリアル化を1から開始することがありますが、これらのレコードは既に存在している可能性があります。

次に、コンソールで:

  • FactoryBotが必要です(以前はFactoryGirlと呼ばれていました):

    require 'factory_bot'
  • ファクトリー定義をロードします。

    FactoryBot.find_definitions
  • FactoryBotメソッドを含めて、FBへのすべての呼び出しの前にFactoryBot(のcreate代わりにFactoryBot.create)を付けないようにします。

    include FactoryBot::Syntax::Methods

PS 製作宝石の場合、以下を使用してRailsコンソールに定義をロードできます。

Fabrication.manager.load_definitions

require 'faker'それを使うならまた。


その最後の行はrequire 'ffaker'
Dihedral

使用するgem(fakerまたはffaker)によって異なりますが、最近ではffakerがより広く使用されていることに同意します。
アレクサンダー

モジュールのfixture_file_upload不在が原因である、未定義のメソッドの問題に直面したActionDispatch::TestProcessので、それも含めることを検討してください
divideByZero

1
あなたがコンソールをたくさん再起動している場合は、ここではワンライナーです:require "factory_bot_rails"; include FactoryBot::Syntax::Methods; require 'ffaker'
Mirror318

2
:このようなコンソールで実行Railsの6.0の場合rails c -e test --sandbox
デヴィッド・モラレス

26

require 'factory_bot_rails'Railsで使用されている実際のgemであるが必要です。その宝石にはFactory Botライブラリが含まれ、FactoryBot利用可能になります。

これを行うか、またはmuttonlambの回答のように、起動時にGemfileを要求するように更新することができます。


私の工場ではFakerを使用していたため、も実行する必要がありましたrequire 'faker'
albertski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.