Class: CompanyScope::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- CompanyScope::InstallGenerator
- Defined in:
- lib/generators/company_scope/install_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_scoping_to_application_controller ⇒ Object
- #generate_company_migration ⇒ Object
- #generate_user_migration ⇒ Object
- #make_company_the_guardian ⇒ Object
- #make_user_a_tenant ⇒ Object
- #modify_application_rb ⇒ Object
Class Method Details
.source_root ⇒ Object
11 12 13 |
# File 'lib/generators/company_scope/install_generator.rb', line 11 def self.source_root File.("../templates", __FILE__) end |
Instance Method Details
#add_scoping_to_application_controller ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/generators/company_scope/install_generator.rb', line 80 def add_scoping_to_application_controller controller_file = 'app/controllers/application_controller.rb' line = 'class ApplicationController < ActionController::Base' insert_company_scope = " company_setup\\n\n set_scoping_class :company\\n\n acts_as_company_filter\\n\n RUBY\n if File.readlines(controller_file).grep(/company_setup/).size == 0\n gsub_file controller_file, /(\#{Regexp.escape(line)})/mi do |match|\n match << \"\\n\#{insert_company_scope}\"\n end\n end\nend\n" |
#generate_company_migration ⇒ Object
29 30 31 32 33 34 |
# File 'lib/generators/company_scope/install_generator.rb', line 29 def generate_company_migration unless .no_migrations? # - generate a company model and migration with a 50 char max on the company name and unique index generate(:model, :company, 'company_name:string{50}:uniq' ) end end |
#generate_user_migration ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/generators/company_scope/install_generator.rb', line 36 def generate_user_migration unless .no_migrations? # - generate a user model and migration with a company_id reference a few basic user auth fields migrate_user_model = " company_id:references\n password_hash:string\n password_salt:string\n first_name:string{50}\n last_name:string{50}\n user_name:string{50}:uniq\n email_address:string{100}:uniq\n RUBY\n generate(:model, :user, \"\#{migrate_user_model.gsub(\"\\n\", \" \")}\")\n end\nend\n" |
#make_company_the_guardian ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/generators/company_scope/install_generator.rb', line 52 def make_company_the_guardian # - add the acts_as_guardian company_scope module into the company model unless .no_migrations? config_file = 'app/models/company.rb' line = "class Company < ActiveRecord::Base" insert_guardian_scope = "acts_as_guardian" if File.readlines(config_file).grep(/acts_as_guardian/).size == 0 gsub_file config_file, /(#{Regexp.escape(line)})/mi do |match| match << "\n\t#{insert_guardian_scope}" end end end end |
#make_user_a_tenant ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/generators/company_scope/install_generator.rb', line 66 def make_user_a_tenant # - add the acts_as_company company_scope module into the user model unless .no_migrations? config_file = 'app/models/user.rb' line = "class User < ActiveRecord::Base" insert_tenant_scope = "acts_as_company" if File.readlines(config_file).grep(/acts_as_company/).size == 0 gsub_file config_file, /(#{Regexp.escape(line)})/mi do |match| match << "\n\t#{insert_tenant_scope}" end end end end |
#modify_application_rb ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/generators/company_scope/install_generator.rb', line 15 def modify_application_rb # add the company_scope configuration enabler into config/application.rb config_file = 'config/application.rb' line = "class Application < Rails::Application" insert_config = " config.company_scope[:configured] = false\n RUBY\n if File.readlines(config_file).grep(/config.company_scope\\[:configured\\] = false/).size == 0\n gsub_file config_file, /(\#{Regexp.escape(line)})/mi do |match|\n match << \"\\n\#{insert_config}\"\n end\n end\nend\n" |