Site cover image
Ruby on Rails エンジンにおけるFactoryBotの設定方法

Ruby on Railsでの開発において、FactoryBotはもはや切っても切れない存在になっています。

しかし、Ruby on Railsでサブアプリを追加する機能の「エンジン」を使う場合には、設定に少し戸惑うかもしれません。

このエントリでは、Ruby on Rails 6のエンジンでFactoryBotを使うための設定を説明します。

エンジンについては下記チュートリアルを参照してください。

以下、エンジン名はチュートリアルで登場する Blorgh を使って説明します。

エンジンのgemspecにfactory_bot_railsの依存を追加し、factoryファイルを配置するパスを追加します。

Gem::Specification.new do |spec|
  # ...
  spec.files = Dir["{app,config,db,lib}/**/*", "spec/factories/**/*", "Rakefile", "README.md"]

  # ...
  spec.add_development_dependency "factory_bot_rails"
end
blorgh/blorgh.gemspec

エンジンクラスでfactory_botのfactoryファイルを配置するパスを追加します。

module Blorgh
  class Engine < ::Rails::Engine
    isolate_namespace Blorgh

    config.generators do |g|
      g.test_framework :rspec, fixture: false
      g.fixture_replacement :factory_bot, dir: "spec/factories"
    end

    initializer "blorgh.factories", after: "factory_bot.set_factory_paths" do
      FactoryBot.definition_file_paths << File.expand_path("../../spec/factories", __dir__) if defined?(FactoryBot)
    end
  end
end
blorgh/lib/blorgh/engine.rb

これでblorgh/spec/factories/以下にfactoryファイルを配置すればspecから使用することができます。

以上です。

このエントリでは、Ruby on Rails6のエンジンでFactoryBotを使うための設定を説明しました。

Thank you!
Thank you!
URLをコピーしました

コメントを送る

コメントはブログオーナーのみ閲覧できます