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_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_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_controller_already_included? ⇒ Boolean
71 72 73 |
# File 'lib/generators/pg_rls/install_generator.rb', line 71 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 |
# File 'lib/generators/pg_rls/install_generator.rb', line 48 def copy_initializer raise MissingORMError, unless [:orm] inject_include_to_application_controller template 'pg_rls.rb.tt', 'config/initializers/pg_rls.rb' end |
#environment_already_included? ⇒ Boolean
75 76 77 |
# File 'lib/generators/pg_rls/install_generator.rb', line 75 def environment_already_included? File.readlines(ENVIRONMENT_PATH).grep(%r{require_relative 'initializers/pg_rls'}).any? end |
#initialize_error_text ⇒ Object
79 80 81 82 83 |
# File 'lib/generators/pg_rls/install_generator.rb', line 79 def initialize_error_text " TO DO\n ERROR\nend\n" |
#inject_include_to_application_controller ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/generators/pg_rls/install_generator.rb', line 63 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
55 56 57 58 59 60 61 |
# File 'lib/generators/pg_rls/install_generator.rb', line 55 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 " 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
85 86 87 |
# File 'lib/generators/pg_rls/install_generator.rb', line 85 def show_readme readme 'README' if behavior == :invoke end |