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

#apply_layoutObject



37
38
39
40
41
42
43
44
45
# File 'lib/generators/chaltron/install_generator.rb', line 37

def apply_layout
  # html
  remove_file 'app/views/layouts/application.html.erb'
  directory 'app/views/layouts'
  directory 'app/assets/images'
  # javascript
  inject_into_file 'app/assets/javascripts/application.js',
    "//= require chaltron\n", before: '//= require_tree .'
end

#create_index_controllerObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/generators/chaltron/install_generator.rb', line 47

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.js.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



18
19
20
# File 'lib/generators/chaltron/install_generator.rb', line 18

def db_migrations
  rake 'chaltron_engine:install:migrations'
end

#db_seedObject



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

def db_seed
  append_file 'db/seeds.rb' do
    "User.create do |u|\n  u.username              = 'bella'\n  u.fullname              = 'Bellatrix Lestrange'\n  u.email                 = '[email protected]'\n  u.password              = 'password.1'\n  u.password_confirmation = 'password.1'\n  u.roles                 = Chaltron.roles\nend\n"
  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



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/generators/chaltron/install_generator.rb', line 75

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

end

#setup_authorizationObject



71
72
73
# File 'lib/generators/chaltron/install_generator.rb', line 71

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

#setup_chaltronObject



66
67
68
69
# File 'lib/generators/chaltron/install_generator.rb', line 66

def setup_chaltron
  copy_file 'config/initializers/chaltron.rb'
  copy_file 'app/assets/stylesheets/chaltron_custom.scss'
end

#setup_navigationObject



62
63
64
# File 'lib/generators/chaltron/install_generator.rb', line 62

def setup_navigation
  copy_file 'config/navigation.rb'
end