Class: Chaltron::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/chaltron/install_generator.rb

Overview

Install a skeleton application

Instance Method Summary collapse

Instance Method Details

#add_gem_dependenciesObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/chaltron/install_generator.rb', line 18

def add_gem_dependencies
  gem 'devise'
  gem 'omniauth'
  gem 'omniauth-rails_csrf_protection'
  gem 'gitlab_omniauth-ldap'
  gem 'cancancan'

  gem 'bootstrap'
  gem 'autoprefixer-rails'
  gem 'font-awesome-sass'

  gem 'jquery-rails'
  gem 'jquery-datatables'
  gem 'ajax-datatables-rails'

  gem 'bootstrap_form'
  gem 'nprogress-rails'
  gem 'simple-navigation'
  gem 'rails-i18n'
end

#add_javascriptObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/generators/chaltron/install_generator.rb', line 65

def add_javascript
  dependencies =<<EOF
//= require jquery
//= require popper
//= require bootstrap
//= require datatables/jquery.dataTables
//= require datatables/dataTables.bootstrap4
//= require datatables/extensions/Responsive/dataTables.responsive
//= require datatables/extensions/Responsive/responsive.bootstrap4
//= require nprogress
//= require nprogress-turbolinks
//= require nprogress-ajax
//= require chaltron
EOF

  inject_into_file 'app/assets/javascripts/application.js', dependencies, before: '//= require_tree .'

  javascript =<<JS


document.addEventListener('DOMContentLoaded', function(event) {
  Chaltron.locale = $('body').data('locale');
});

NProgress.configure({
  showSpinner: false,
});

JS
  inject_into_file 'app/assets/javascripts/application.js', javascript, after: '//= require_tree .'
end

#add_stylesheetsObject



97
98
99
100
# File 'lib/generators/chaltron/install_generator.rb', line 97

def add_stylesheets
  copy_file 'app/assets/stylesheets/chaltron_custom.scss'
  copy_file 'app/assets/stylesheets/datatables.scss'
end

#apply_layoutObject



58
59
60
61
62
63
# File 'lib/generators/chaltron/install_generator.rb', line 58

def apply_layout
  # html
  remove_file 'app/views/layouts/application.html.erb'
  directory 'app/views/layouts'
  directory 'app/assets/images'
end

#create_index_controllerObject



102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/generators/chaltron/install_generator.rb', line 102

def create_index_controller
  generate 'controller home index'
  route "root to: 'home#index'"

  # controller, views and assets replacement
  copy_file 'app/controllers/home_controller.rb', force: true
  directory 'app/views/home/', force: true
  copy_file 'app/assets/javascripts/home.coffee', force: true
  copy_file 'app/assets/stylesheets/home.scss', force: true

  Array(1..10).each do |x|
    route "get 'home/test#{x}'"
  end
end

#db_migrationsObject



39
40
41
# File 'lib/generators/chaltron/install_generator.rb', line 39

def db_migrations
  rake 'chaltron_engine:install:migrations'
end

#db_seedObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generators/chaltron/install_generator.rb', line 43

def db_seed
  append_file 'db/seeds.rb' do
    <<RUBY
User.create do |u|
  u.username              = 'bella'
  u.fullname              = 'Bellatrix Lestrange'
  u.email                 = '[email protected]'
  u.password              = 'password.1'
  u.password_confirmation = 'password.1'
  u.roles                 = Chaltron.roles
end
RUBY
  end
end

#disclaimerObject



11
12
13
14
15
16
# File 'lib/generators/chaltron/install_generator.rb', line 11

def disclaimer
  print_banner
  if options.interactive?
    exit unless yes?('Are you sure you want to continue? [yes/NO]')
  end
end

#setup_ajax_datatablesObject



129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/generators/chaltron/install_generator.rb', line 129

def setup_ajax_datatables
  ajax_datatables_rails_file = 'config/initializers/ajax_datatables_rails.rb'
  copy_file ajax_datatables_rails_file

  # setup ajax-datatables-rails
  db_adapter =
    case ActiveRecord::Base.connection.adapter_name
    when 'Mysql2'     then :mysql2
    when 'SQLite'     then :sqlite3
    when 'PostgreSQL' then :pg
    else nil
    end

  if db_adapter.nil?
    message =<<EOF
  PAY ATTENTION!
  ajax-datatables-rails gem (needed by chaltron) does not support #{options[:database]}.
  See https://github.com/antillas21/ajax-datatables-rails#searching-on-non-text-based-columns.
  You may experience problems!
EOF
    say message
  else
    gsub_file ajax_datatables_rails_file,
      /# config.db_adapter = :mysql2/, "config.db_adapter = :#{db_adapter}"
  end

end

#setup_authorizationObject



125
126
127
# File 'lib/generators/chaltron/install_generator.rb', line 125

def setup_authorization
  copy_file 'app/models/ability.rb'
end

#setup_chaltronObject



121
122
123
# File 'lib/generators/chaltron/install_generator.rb', line 121

def setup_chaltron
  copy_file 'config/initializers/chaltron.rb'
end

#setup_navigationObject



117
118
119
# File 'lib/generators/chaltron/install_generator.rb', line 117

def setup_navigation
  copy_file 'config/navigation.rb'
end