Class: ReactOnRails::Generators::ProGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
GeneratorHelper, JsDependencyManager, ProSetup
Defined in:
lib/generators/react_on_rails/pro_generator.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary

Constants included from ProSetup

ReactOnRails::Generators::ProSetup::AUTO_INSTALL_TIMEOUT, ReactOnRails::Generators::ProSetup::PRO_GEM_NAME, ReactOnRails::Generators::ProSetup::TERMINATION_GRACE_PERIOD

Constants included from JsDependencyManager

JsDependencyManager::BABEL_REACT_DEPENDENCIES, JsDependencyManager::CSS_DEPENDENCIES, JsDependencyManager::DEV_DEPENDENCIES, JsDependencyManager::PRO_DEPENDENCIES, JsDependencyManager::REACT_DEPENDENCIES, JsDependencyManager::RSC_DEPENDENCIES, JsDependencyManager::RSC_PACKAGE_VERSION_PIN, JsDependencyManager::RSC_REACT_VERSION_RANGE, JsDependencyManager::RSPACK_DEPENDENCIES, JsDependencyManager::RSPACK_DEV_DEPENDENCIES, JsDependencyManager::SWC_DEPENDENCIES, JsDependencyManager::TYPESCRIPT_DEPENDENCIES

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ProSetup

#missing_pro_gem?, #setup_pro

Methods included from GeneratorHelper

#add_documentation_reference, #add_npm_dependencies, #component_extension, #copy_file_and_missing_parent_directories, #dest_dir_exists?, #dest_file_exists?, #destination_config_path, #detect_react_version, #empty_directory_with_keep_file, #gem_in_lockfile?, #keep_file, #mark_pro_gem_installed!, #package_json, #print_generator_messages, #pro_gem_installed?, #resolve_server_client_or_both_path, #root_route_present?, #setup_file_error, #shakapacker_version_9_or_higher?, #symlink_dest_file_to_dest_file, #use_pro?, #use_rsc?, #use_rsc_pro_mode?, #using_rspack?, #using_swc?

Class Method Details

.usage_pathObject



21
22
23
# File 'lib/generators/react_on_rails/pro_generator.rb', line 21

def self.usage_path
  File.expand_path("pro/USAGE", __dir__)
end

Instance Method Details

#run_generatorObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/generators/react_on_rails/pro_generator.rb', line 32

def run_generator
  original_gemfile_content_before_prerequisites = read_current_gemfile_content

  # When invoked by install_generator, skip prerequisites (parent already validated)
  if options[:invoked_by_install] || prerequisites_met?
    return unless options[:invoked_by_install] || swap_base_gem_for_pro_in_gemfile(
      original_gemfile_content_for_rollback: original_gemfile_content_before_prerequisites
    )

    setup_pro
    add_pro_npm_dependencies
    update_imports_to_pro_package unless options[:invoked_by_install]
    print_success_message unless options[:invoked_by_install]
  else
    GeneratorMessages.add_error(<<~MSG.strip)
      🚫 React on Rails Pro generator prerequisites not met!

      Please resolve the issues listed above before continuing.
    MSG
  end
ensure
  print_generator_messages unless options[:invoked_by_install]
end