Class: NextRailsScaffold::Generators::ScaffoldGenerator
- Inherits:
-
Rails::Generators::ScaffoldGenerator
- Object
- Rails::Generators::ScaffoldGenerator
- NextRailsScaffold::Generators::ScaffoldGenerator
- Includes:
- Actions
- Defined in:
- lib/generators/next_rails_scaffold/scaffold_generator.rb
Instance Attribute Summary collapse
-
#selected_package_manager ⇒ Object
Returns the value of attribute selected_package_manager.
Instance Method Summary collapse
- #add_resource_route ⇒ Object
-
#create_frontend_project ⇒ Object
Check Javascript dependencies and create a new Next.js project.
- #create_root_folder ⇒ Object
-
#initialize(args, *options) ⇒ ScaffoldGenerator
constructor
:nodoc:.
Methods included from Actions
Constructor Details
#initialize(args, *options) ⇒ ScaffoldGenerator
:nodoc:
21 22 23 24 |
# File 'lib/generators/next_rails_scaffold/scaffold_generator.rb', line 21 def initialize(args, *) # :nodoc: super self.attributes = shell.base.attributes end |
Instance Attribute Details
#selected_package_manager ⇒ Object
Returns the value of attribute selected_package_manager.
19 20 21 |
# File 'lib/generators/next_rails_scaffold/scaffold_generator.rb', line 19 def selected_package_manager @selected_package_manager end |
Instance Method Details
#add_resource_route ⇒ Object
26 27 28 29 30 |
# File 'lib/generators/next_rails_scaffold/scaffold_generator.rb', line 26 def add_resource_route return if [:actions].present? || [:skip_routes] route "resources :#{file_name.pluralize}", namespace: regular_class_path, scope: "/api" end |
#create_frontend_project ⇒ Object
Check Javascript dependencies and create a new Next.js project. Install the the useful packages and create the scaffold code for frontend application.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/generators/next_rails_scaffold/scaffold_generator.rb', line 38 def create_frontend_project return say_status :remove, "skip frontend folder", :yellow if shell.base.behavior == :revoke append_gitignore! node_package_manager = NodePackageManager.new(shell) inside("frontend") do node_package_manager.check_node! node_package_manager.check_pm_version! node_package_manager.create_next_app! node_package_manager.install_hygen! return if Rails.env.test? selected_package_manager = node_package_manager.selected_package_manager language = File.exist?("tsconfig.json") ? "typescript" : "javascript" run("#{selected_package_manager.fetch} hygen scaffold #{language} #{name} #{mapped_attributes.join(" ")}") if ![:skip_build] && !@prompt.no?("Do you want to build your Next.js project?") run("#{selected_package_manager.run} build") end end end |
#create_root_folder ⇒ Object
32 33 34 |
# File 'lib/generators/next_rails_scaffold/scaffold_generator.rb', line 32 def create_root_folder empty_directory "frontend" end |