Class: Supabase::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Supabase::Generators::InstallGenerator
- Defined in:
- lib/generators/supabase/install/install_generator.rb
Overview
‘rails g supabase:install` (FR-W12 / US-018).
Emits the host-app glue for ‘:web` mode: an `Authentication` concern that includes the gem’s module, five near-empty controllers that subclass the gem’s ‘Supabase::Rails::*Controller` base classes, a `Current` model, and a config initializer. Also patches `config/routes.rb` (adds `supabase_authentication_routes`) and `app/controllers/application_controller.rb` (adds `include Authentication`).
Idempotent — Thor’s ‘template` + `inject_into_file` skip writes when the target already matches the desired content, and prompt the user to overwrite when files diverge from the gem’s defaults.
Instance Method Summary collapse
- #create_authentication_concern ⇒ Object
- #create_controllers ⇒ Object
- #create_current_model ⇒ Object
- #create_initializer ⇒ Object
- #patch_application_controller ⇒ Object
- #patch_routes ⇒ Object
Instance Method Details
#create_authentication_concern ⇒ Object
30 31 32 33 |
# File 'lib/generators/supabase/install/install_generator.rb', line 30 def create_authentication_concern template "app/controllers/concerns/authentication.rb.tt", "app/controllers/concerns/authentication.rb" end |
#create_controllers ⇒ Object
35 36 37 38 39 40 |
# File 'lib/generators/supabase/install/install_generator.rb', line 35 def create_controllers %w[sessions registrations passwords otp oauth].each do |name| template "app/controllers/#{name}_controller.rb.tt", "app/controllers/#{name}_controller.rb" end end |
#create_current_model ⇒ Object
42 43 44 |
# File 'lib/generators/supabase/install/install_generator.rb', line 42 def create_current_model template "app/models/current.rb.tt", "app/models/current.rb" end |
#create_initializer ⇒ Object
46 47 48 49 |
# File 'lib/generators/supabase/install/install_generator.rb', line 46 def create_initializer template "config/initializers/supabase.rb.tt", "config/initializers/supabase.rb" end |
#patch_application_controller ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/generators/supabase/install/install_generator.rb', line 61 def patch_application_controller app_controller_path = "app/controllers/application_controller.rb" return unless File.exist?(File.(app_controller_path, destination_root)) return if application_controller_already_patched?(app_controller_path) inject_into_class app_controller_path, "ApplicationController" do " include Authentication\n" end end |
#patch_routes ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/generators/supabase/install/install_generator.rb', line 51 def patch_routes routes_path = "config/routes.rb" return unless File.exist?(File.(routes_path, destination_root)) return if routes_already_patched?(routes_path) inject_into_file routes_path, " supabase_authentication_routes\n", after: "Rails.application.routes.draw do\n" end |