Class: Federails::CopyFactoriesGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/federails/copy_factories/copy_factories_generator.rb

Constant Summary collapse

SOURCE_DIRECTORY =
File.expand_path('../../../../spec/factories/federails', __dir__)
FACTORY_DEFINITION_REGEX =
/(FactoryBot.define do\n\s+factory) :(\w+),/

Instance Method Summary collapse

Constructor Details

#initializeCopyFactoriesGenerator

Returns a new instance of CopyFactoriesGenerator.



8
9
10
11
12
# File 'lib/generators/federails/copy_factories/copy_factories_generator.rb', line 8

def initialize
  super
  @files = []
  @factories = []
end

Instance Method Details

#copy_factoriesObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/generators/federails/copy_factories/copy_factories_generator.rb', line 14

def copy_factories
  dest = Rails.root.join('spec', 'factories')

  Dir.entries(SOURCE_DIRECTORY).each do |node|
    source_path = File.join(SOURCE_DIRECTORY, node)
    next unless File.file?(source_path) && node.match?(/\.rb\Z/)

    file_path = File.join(dest, "federails_#{node}")
    copy_file node, file_path
    @files << file_path
    @factories << File.read(file_path).match(FACTORY_DEFINITION_REGEX)&.[](2)
  end

  substitute_values!
end