Class: ReactOnRails::Generators::ReactWithReduxGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ReactOnRails::Generators::ReactWithReduxGenerator
show all
- Includes:
- GeneratorHelper, DemoPageConfig
- Defined in:
- lib/generators/react_on_rails/react_with_redux_generator.rb
Instance Method Summary
collapse
#build_hello_server_view_config, #build_hello_world_view_config
#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?
Instance Method Details
#add_redux_npm_dependencies ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/generators/react_on_rails/react_with_redux_generator.rb', line 97
def add_redux_npm_dependencies
regular_packages = %w[redux react-redux]
success = add_npm_dependencies(regular_packages)
return if success
package_manager = GeneratorMessages.detect_package_manager
return unless package_manager
install_packages_with_fallback(regular_packages, dev: false, package_manager: package_manager)
end
|
#add_redux_specific_messages ⇒ Object
#copy_base_files ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/generators/react_on_rails/react_with_redux_generator.rb', line 47
def copy_base_files
base_js_path = "redux/base"
ext = component_extension(options)
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.client.#{ext}",
"app/javascript/src/HelloWorldApp/ror_components/HelloWorldApp.client.#{ext}")
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.server.#{ext}",
"app/javascript/src/HelloWorldApp/ror_components/HelloWorldApp.server.#{ext}")
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/components/HelloWorld.module.css",
"app/javascript/src/HelloWorldApp/components/HelloWorld.module.css")
ror_client_file = "app/javascript/src/HelloWorldApp/ror_components/HelloWorldApp.client.#{ext}"
gsub_file(ror_client_file, "../store/helloWorldStore", "../store/helloWorldStore")
gsub_file(ror_client_file, "../containers/HelloWorldContainer",
"../containers/HelloWorldContainer")
end
|
#copy_base_redux_files ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/generators/react_on_rails/react_with_redux_generator.rb', line 66
def copy_base_redux_files
base_hello_world_path = "redux/base/app/javascript/bundles/HelloWorld"
redux_extension = options.typescript? ? "ts" : "js"
%W[actions/helloWorldActionCreators.#{redux_extension}
containers/HelloWorldContainer.#{redux_extension}
constants/helloWorldConstants.#{redux_extension}
reducers/helloWorldReducer.#{redux_extension}
store/helloWorldStore.#{redux_extension}
components/HelloWorld.#{component_extension(options)}].each do |file|
copy_file("#{base_hello_world_path}/#{file}",
"app/javascript/src/HelloWorldApp/#{file}")
end
end
|
#create_appropriate_templates ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/generators/react_on_rails/react_with_redux_generator.rb', line 82
def create_appropriate_templates
base_path = "base/base"
template("#{base_path}/app/views/hello_world/index.html.erb.tt",
"app/views/hello_world/index.html.erb",
build_hello_world_view_config(
component_name: "HelloWorldApp",
source_path: "app/javascript/src/HelloWorldApp/",
landing_page: new_app_landing_page_available?,
redux: true,
rsc_demo: options[:rsc]
))
end
|
#create_redux_directories ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/generators/react_on_rails/react_with_redux_generator.rb', line 38
def create_redux_directories
empty_directory("app/javascript/src/HelloWorldApp/ror_components")
dirs = %w[actions constants containers reducers store components]
dirs.each { |name| empty_directory("app/javascript/src/HelloWorldApp/#{name}") }
end
|