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
- #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
#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 = <<-RUBY company_id:id password_hash:string password_salt:string first_name:string{50} last_name:string{50} user_name:string{50}:uniq email_address:string{100}:uniq RUBY generate(:model, :user, "#{migrate_user_model.gsub("\n", " ")}") end end |
#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#{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#{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 = <<-RUBY config.company_scope[:configured] = false RUBY if File.readlines(config_file).grep(/config.company_scope\[:configured\] = false/).size == 0 gsub_file config_file, /(#{Regexp.escape(line)})/mi do |match| match << "\n#{insert_config}" end end end |