Class: ReactOnRails::PacksGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/react_on_rails/packs_generator.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

CONTAINS_CLIENT_OR_SERVER_REGEX =
/\.(server|client)($|\.)/.freeze
MINIMUM_SHAKAPACKER_MAJOR_VERSION =
6
MINIMUM_SHAKAPACKER_MINOR_VERSION =
5
MINIMUM_SHAKAPACKER_PATCH_VERSION =
1

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.generateObject



13
14
15
16
# File 'lib/react_on_rails/packs_generator.rb', line 13

def self.generate
  packs_generator = PacksGenerator.new
  packs_generator.verify_setup_and_generate_packs
end

.raise_nested_enteries_disabledObject



18
19
20
21
# File 'lib/react_on_rails/packs_generator.rb', line 18

def self.raise_nested_enteries_disabled
  packs_generator = PacksGenerator.new
  packs_generator.raise_nested_enteries_disabled
end

Instance Method Details

#raise_nested_enteries_disabledObject



38
39
40
41
42
43
44
45
46
# File 'lib/react_on_rails/packs_generator.rb', line 38

def raise_nested_enteries_disabled
  msg = <<~MSG
    **ERROR** ReactOnRails: `nested_entries` is configured to be disabled in shakapacker. Please update \
    webpacker.yml to enable nested enteries. for more information read
    https://www.shakacode.com/react-on-rails/docs/guides/file-system-based-automated-bundle-generation.md#enable-nested_entries-for-shakapacker
  MSG

  raise ReactOnRails::Error, msg
end

#verify_setup_and_generate_packsObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/react_on_rails/packs_generator.rb', line 23

def verify_setup_and_generate_packs
  return unless components_subdirectory.present?

  raise_webpacker_not_installed unless ReactOnRails::WebpackerUtils.using_webpacker?
  raise_shakapacker_version_incompatible unless shackapacker_version_requirement_met?
  raise_nested_enteries_disabled unless ReactOnRails::WebpackerUtils.nested_entries?

  is_generated_directory_present = Dir.exist?(generated_packs_directory_path)

  return if is_generated_directory_present && webpack_assets_status_checker.stale_generated_component_packs.empty?

  clean_generated_packs_directory
  generate_packs
end