Class: PgRls::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- PgRls::Generators::InstallGenerator
- Defined in:
- lib/generators/pg_rls/install_generator.rb
Overview
Installer Generator
Constant Summary collapse
- APPLICATION_LINE =
'class Application < Rails::Application'
- APPLICATION_PATH =
'config/application.rb'
- APPLICATION_RECORD_LINE =
'class ApplicationRecord < ActiveRecord::Base'
- APPLICATION_RECORD_PATH =
'app/models/application_record.rb'
- APPLICATION_CONTROLLER_LINE =
'class ApplicationController < ActionController::Base'
- APPLICATION_CONTROLLER_PATH =
'app/controllers/application_controller.rb'
Instance Method Summary collapse
- #aplication_already_included? ⇒ Boolean
- #aplication_controller_already_included? ⇒ Boolean
- #copy_initializer ⇒ Object
-
#initialize(*args) ⇒ InstallGenerator
constructor
A new instance of InstallGenerator.
- #initialize_error_text ⇒ Object
- #inject_include_to_application ⇒ Object
- #inject_include_to_application_controller ⇒ Object
- #orm_error_message ⇒ Object
- #show_readme ⇒ Object
Constructor Details
#initialize(*args) ⇒ InstallGenerator
Returns a new instance of InstallGenerator.
11 12 13 14 15 16 17 18 |
# File 'lib/generators/pg_rls/install_generator.rb', line 11 def initialize(*args) tenant_model_or_table = args.first if tenant_model_or_table.present? PgRls.table_name = tenant_model_or_table.first.pluralize PgRls.class_name = tenant_model_or_table.first.singularize end super end |
Instance Method Details
#aplication_already_included? ⇒ Boolean
73 74 75 |
# File 'lib/generators/pg_rls/install_generator.rb', line 73 def aplication_already_included? File.readlines(APPLICATION_PATH).grep(/config.active_record.schema_format = :sql/).any? end |
#aplication_controller_already_included? ⇒ Boolean
69 70 71 |
# File 'lib/generators/pg_rls/install_generator.rb', line 69 def aplication_controller_already_included? File.readlines(APPLICATION_CONTROLLER_PATH).grep(/include PgRls::MultiTenancy/).any? end |
#copy_initializer ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/generators/pg_rls/install_generator.rb', line 45 def copy_initializer raise MissingORMError, unless [:orm] inject_include_to_application inject_include_to_application_controller template 'pg_rls.rb.tt', 'config/initializers/pg_rls.rb' end |
#initialize_error_text ⇒ Object
77 78 79 80 81 |
# File 'lib/generators/pg_rls/install_generator.rb', line 77 def initialize_error_text <<~ERROR TO DO ERROR end |
#inject_include_to_application ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/generators/pg_rls/install_generator.rb', line 53 def inject_include_to_application return if aplication_already_included? gsub_file(APPLICATION_PATH, /(#{Regexp.escape(APPLICATION_LINE)})/mio) do |match| "#{match}\n config.active_record.schema_format = :sql\n" end end |
#inject_include_to_application_controller ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/generators/pg_rls/install_generator.rb', line 61 def inject_include_to_application_controller return if aplication_controller_already_included? gsub_file(APPLICATION_CONTROLLER_PATH, /(#{Regexp.escape(APPLICATION_CONTROLLER_LINE)})/mio) do |match| "#{match}\n include PgRls::MultiTenancy\n" end end |
#orm_error_message ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/generators/pg_rls/install_generator.rb', line 34 def <<~ERROR An ORM must be set to install PgRls in your application. Be sure to have an ORM like Active Record or loaded in your app or configure your own at `config/application.rb`. config.generators do |g| g.orm :your_orm_gem end ERROR end |
#show_readme ⇒ Object
83 84 85 |
# File 'lib/generators/pg_rls/install_generator.rb', line 83 def show_readme readme 'README' if behavior == :invoke end |