Class: DevshopGenerator

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

Instance Method Summary collapse

Instance Method Details

#create_admin_sessionsObject



112
113
114
115
# File 'lib/generators/devshop_generator.rb', line 112

def create_admin_sessions
  #copy sessions controller template
  template "sessions_controller.rb", "app/controllers/admin/sessions_controller.rb"
end

#create_application_helperObject



69
70
71
# File 'lib/generators/devshop_generator.rb', line 69

def create_application_helper
  template "application_helper.rb", "app/helpers/application_helper.rb"
end

#create_basic_admin_routesObject



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/generators/devshop_generator.rb', line 117

def create_basic_admin_routes
  #remove example code which screws up the route insert
  gsub_file "config/routes.rb", /#   namespace :admin do/, ""

  #insert admin namespace
  insert_into_file "config/routes.rb", after: ".draw do" do 
    "\n\s namespace :admin do \n\tend"
  end


  #insert login / logout / create session routes
  insert_into_file "config/routes.rb", after: "namespace :admin do" do 
    "\n\t\tget 'login', to: 'sessions#new', as: :login\n\t\tget 'logout', to: 'sessions#destroy', as: :logout\n\t\tpost 'sessions', to: 'sessions#create', as: :sessions"
  end

  #insert root admin route
  insert_into_file "config/routes.rb", after: "namespace :admin do" do 
    "\n\t\tget '/', to: 'administrators#index', as: :root"
  end

end

#create_name_spaced_assetsObject



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/generators/devshop_generator.rb', line 87

def create_name_spaced_assets
  #create js assets
  template "application.js", "app/assets/javascripts/application.js"

  #create css assets
  template "normalize.css", "app/assets/stylesheets/normalize.css"
  template "base.css.sass", "app/assets/stylesheets/base.css.sass"
  template "application.css.sass", "app/assets/stylesheets/application.css.sass"


  #create admin js assets
  empty_directory "app/assets/javascripts/admin"  
  template "bootstrap.js", "app/assets/javascripts/admin/bootstrap.js"
  template "admin_application.js", "app/assets/javascripts/admin/application.js"

  #create admin css assets
  empty_directory "app/assets/stylesheets/admin"
  template "bootstrap.css", "app/assets/stylesheets/admin/bootstrap.css"
  template "admin_application.css.sass", "app/assets/stylesheets/admin/application.css.sass"
  
  ##application layout
  template "application.html.haml", "app/views/layouts/application.html.haml"

end

#create_public_controllerObject



79
80
81
# File 'lib/generators/devshop_generator.rb', line 79

def create_public_controller
  template "public_controller.rb", "app/controllers/public_controller.rb"
end

#create_root_routeObject



73
74
75
76
77
# File 'lib/generators/devshop_generator.rb', line 73

def create_root_route
  insert_into_file "config/routes.rb", after: ".draw do" do 
    "\n\troot to: 'public#index'" 
  end
end

#create_seed_fileObject



64
65
66
67
# File 'lib/generators/devshop_generator.rb', line 64

def create_seed_file
  template "seeds.rb", "db/seeds.rb"
  run "rake db:seed"
end

#create_sessions_viewObject



83
84
85
# File 'lib/generators/devshop_generator.rb', line 83

def create_sessions_view
  template "sessions/new.html.haml", "app/views/admin/sessions/new.html.haml"
end

#create_sql_db_yml_fileObject



50
51
52
53
# File 'lib/generators/devshop_generator.rb', line 50

def create_sql_db_yml_file
  template "database.yml", "config/database.yml"
  run "rake db:create"
end

#gems_to_enableObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/generators/devshop_generator.rb', line 23

def gems_to_enable
  #uncomment these gems
  ["'debugger'", "'bcrypt-ruby'", "'capistrano'"].each  do |lib|
    gsub_file 'Gemfile', /# gem #{lib}/ do |match|
      "gem #{lib}"
    end
  end
  
  #replace sqlite3 with mysql2
  gsub_file 'Gemfile', /gem 'sqlite3'/ do |match|
    "gem 'mysql2'"
  end

  #add haml gem
  gem 'haml-rails'


  #add following gems to development
  gem_group :development do 
    gem 'letter_opener'
    gem 'quiet_assets'
    gem 'thin'
  end

  run "bundle install"
end

#public_viewsObject



18
19
20
21
# File 'lib/generators/devshop_generator.rb', line 18

def public_views
  empty_directory 'app/views/public'
  create_file 'app/views/public/index.html.haml', "this is your public index page"
end

#remove_filesObject

remove files not being used or that will be replaced by our templates



8
9
10
11
12
13
14
15
16
# File 'lib/generators/devshop_generator.rb', line 8

def remove_files
  remove_file "app/public/index.html"
  remove_file "app/views/layouts/application.html.erb"
  remove_file "app/assets/stylesheets/application.css"
  remove_file "app/assets/javascripts/application.js"
  remove_file "config/database.yml"
  remove_file "app/helpers/application_helper.rb"
  remove_file "db/seeds.rb"
end

#setup_administrator_modelObject



55
56
57
58
59
60
61
# File 'lib/generators/devshop_generator.rb', line 55

def setup_administrator_model
  run "rails g model Administrator email password_digest"
  run "rake db:migrate"
  inject_into_class "app/models/administrator.rb", Administrator do 
    "has_secure_password\n"
  end
end