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 " TO DO\n ERROR\nend\n" |
#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 " An ORM must be set to install PgRls in your application.\n Be sure to have an ORM like Active Record or loaded in your\n app or configure your own at `config/application.rb`.\n config.generators do |g|\n g.orm :your_orm_gem\n end\n ERROR\nend\n" |
#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 |