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
- ENVIRONMENT_LINE =
'Rails.application.initialize!'
- ENVIRONMENT_PATH =
'config/environment.rb'
- 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
- #environment_already_included? ⇒ Boolean
-
#initialize(*args) ⇒ InstallGenerator
constructor
A new instance of InstallGenerator.
- #initialize_error_text ⇒ Object
- #inject_include_to_application ⇒ Object
- #inject_include_to_application_controller ⇒ Object
- #inject_include_to_environment ⇒ 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
84 85 86 |
# File 'lib/generators/pg_rls/install_generator.rb', line 84 def aplication_already_included? File.readlines(APPLICATION_PATH).grep(/config.active_record.schema_format = :sql/).any? end |
#aplication_controller_already_included? ⇒ Boolean
80 81 82 |
# File 'lib/generators/pg_rls/install_generator.rb', line 80 def aplication_controller_already_included? File.readlines(APPLICATION_CONTROLLER_PATH).grep(/include PgRls::MultiTenancy/).any? end |
#copy_initializer ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/generators/pg_rls/install_generator.rb', line 48 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 |
#environment_already_included? ⇒ Boolean
88 89 90 |
# File 'lib/generators/pg_rls/install_generator.rb', line 88 def environment_already_included? File.readlines(ENVIRONMENT_PATH).grep(%r{require_relative 'initializers/pg_rls'}).any? end |
#initialize_error_text ⇒ Object
92 93 94 95 96 |
# File 'lib/generators/pg_rls/install_generator.rb', line 92 def initialize_error_text <<~ERROR TO DO ERROR end |
#inject_include_to_application ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/generators/pg_rls/install_generator.rb', line 64 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
72 73 74 75 76 77 78 |
# File 'lib/generators/pg_rls/install_generator.rb', line 72 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 |
#inject_include_to_environment ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/generators/pg_rls/install_generator.rb', line 56 def inject_include_to_environment return if environment_already_included? gsub_file(ENVIRONMENT_PATH, /(#{Regexp.escape(ENVIRONMENT_LINE)})/mio) do |match| "require_relative 'initializers/pg_rls'\n#{match}" end end |
#orm_error_message ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/generators/pg_rls/install_generator.rb', line 37 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
98 99 100 |
# File 'lib/generators/pg_rls/install_generator.rb', line 98 def show_readme readme 'README' if behavior == :invoke end |