Class: Isaca::Rails::InstallGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/isaca/rails/install/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_claim_modelObject

Add claim model



39
40
41
42
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 39

def add_claim_model
  filepath = Rails.root + 'app/models/claim.rb'
  template 'claim.rb.erb', filepath unless File.exist? filepath
end

Add required ISACA consent javascript



15
16
17
18
19
20
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 15

def add_isaca_consent_javascript
  inject_into_file Rails.root + 'app/views/layouts/application.html.erb', before: '</head>' do <<-RUBY
  <%= isaca_consent_javascript %>
  RUBY
  end
end

#add_isaca_routingObject

Add Isaca::Rails Routing to the application



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 56

def add_isaca_routing
  routes = [
      "resources :administrators, except: [:update], module: 'isaca/rails/platform', path: 'platform/administrators'",
      "post '/platform/administrators/:administrator_id/claims', to: 'isaca/rails/platform/claims#create', as: 'administrator_claims'",
      "resource :session, only: [:create], controller: 'isaca/rails/sessions'",
      "resource :user_consent, only: [:show, :create], controller: 'isaca/rails/users_consent'",
      "get '/sign_in' => 'isaca/rails/sessions#new', as: 'sign_in'",
      "delete '/sign_out' => 'isaca/rails/sessions#destroy', as: 'sign_out'"
  ].reverse!

  routes.each do |route|
    inject_route(route) unless File.foreach(Rails.root + 'config/routes.rb').any? { |line| line.include? route }
  end

  root_code = "root to: 'isaca/rails/welcome#index'"
  inject_route(root_code) unless File.foreach(Rails.root + 'config/routes.rb').any? {|line| line.include? 'root to:'}
end

#add_isaca_stylsheetsObject

Add stylesheets for default page look and feel - required if you don’t override the sign_in page



75
76
77
78
79
80
81
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 75

def add_isaca_stylsheets
  code = '*= require isaca/rails/application'

  inject_into_file Rails.root + 'app/assets/stylesheets/application.css',
                   optimize_indentation(code, 2),
                   before: '*= require_tree .'
end

#add_migrationsObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 83

def add_migrations
  if user_table_exists?
    migration_template 'add_isaca_to_existing_users.rb.erb',
                       Rails.root + "db/migrate/add_isaca_#{name.pluralize.underscore}.rb"
  else
    migration_template 'add_isaca_users.rb.erb',
                       Rails.root + "db/migrate/add_isaca_#{name.pluralize.underscore}.rb"
  end

  if claim_table_exists?
  else
    migration_template 'add_isaca_claims.rb.erb',
                       Rails.root + "db/migrate/add_isaca_claims.rb"
  end
end

#copy_initializer_filesObject

Copies all initializer files required for an ISACA project



9
10
11
12
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 9

def copy_initializer_files
  copy_file("isaca.rb", Rails.root + 'config/initializers/isaca.rb')
  copy_file("isaca-rails.rb",  Rails.root + 'config/initializers/isaca-rails.rb')
end

#display_readmeObject



99
100
101
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 99

def display_readme
  readme 'README'
end

#extend_application_controllerObject

Extend application controller with Isaca::Rails::Sessionable



45
46
47
48
49
50
51
52
53
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 45

def extend_application_controller
  code = <<-RUBY
  \ninclude Isaca::Rails::Controller
  RUBY

  inject_into_file Rails.root + 'app/controllers/application_controller.rb',
                   optimize_indentation(code, 2),
                   after: 'class ApplicationController < ActionController::Base'
end

#extend_application_modelObject

Extend application user model with Isaca::Rails::User



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/isaca/rails/install/install_generator.rb', line 23

def extend_application_model
  filepath = Rails.root + "app/models/#{name.singularize.underscore}.rb"
  if File.exist? filepath
    code = <<-RUBY
    \ninclude Isaca::Rails::User
    RUBY

    inject_into_file filepath,
                     optimize_indentation(code, 2),
                     after: "class #{name.singularize.classify} < ApplicationRecord"
  else
    template 'user.rb.erb', filepath
  end
end