Class: Cambium::AppGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_application_configObject

Add settings to application config file (config/application.rb)



65
66
67
# File 'lib/generators/cambium/app_generator.rb', line 65

def add_application_config
  environment { file_contents("config/application.rb") }
end

#add_application_controller_redirectsObject

Override Devise’s default redirects and sign in/out



156
157
158
159
160
161
162
# File 'lib/generators/cambium/app_generator.rb', line 156

def add_application_controller_redirects
  insert_into_file(
    "app/controllers/application_controller.rb",
    template_snippet("app/controllers/application_controller.rb"),
    :after => ":exception"
  )
end

#add_assets_initializerObject

Assets initializer for Rails 4.1+



71
72
73
74
# File 'lib/generators/cambium/app_generator.rb', line 71

def add_assets_initializer
  file = "config/initializers/assets.rb"
  template(file, file)
end

#add_default_routesObject

Add our default routes file, which is commented out except for the root path to the home controller.

We don’t override routes here in case the user started to edit their routes file before running this generator.



200
201
202
# File 'lib/generators/cambium/app_generator.rb', line 200

def add_default_routes
  template "config/routes.rb", "config/routes.rb", :force => true
end

#add_devise_user_modelObject

Add a User model



144
145
146
# File 'lib/generators/cambium/app_generator.rb', line 144

def add_devise_user_model
  generate "devise User"
end

#add_gitignoreObject

Add custom gitignore file



78
79
80
81
# File 'lib/generators/cambium/app_generator.rb', line 78

def add_gitignore
  remove_file ".gitignore"
  template "gitignore", ".gitignore"
end

#add_home_controllerObject

Add a default public controller, so we have a working home page when we’re done.



86
87
88
# File 'lib/generators/cambium/app_generator.rb', line 86

def add_home_controller
  generate "controller home index"
end

#add_js_frameworkObject

We’re going to automatically install backbone unless the user has disabled it



108
109
110
# File 'lib/generators/cambium/app_generator.rb', line 108

def add_js_framework
  directory("app/assets/javascripts", "app/assets/javascripts")
end

#add_js_manifestObject

Next, we need to replace our application.js file to add backbone and its dependencies, along with our default scripts.



116
117
118
119
120
121
# File 'lib/generators/cambium/app_generator.rb', line 116

def add_js_manifest
  app_js = "app/assets/javascripts/application.js"
  remove_file app_js
  app_js += ".coffee"
  template app_js, app_js
end

#add_layoutsObject

Our layouts are templated so we can start with some custom information.



100
101
102
103
# File 'lib/generators/cambium/app_generator.rb', line 100

def add_layouts
  app = "app/views/layouts/application.html.erb"
  template app, app, :force => true
end

#add_public_manifestObject

Add our application.scss file. Since we don’t know what file exists, we look for and delete all and replace with ours.



127
128
129
130
131
132
133
134
# File 'lib/generators/cambium/app_generator.rb', line 127

def add_public_manifest
  ['css','scss','scss.css'].each do |ext|
    file = "app/assets/stylesheets/application.#{ext}"
    remove_file(file) if File.exists?(file)
  end
  manifest_file = "app/assets/stylesheets/application.scss"
  template manifest_file, manifest_file
end

#add_public_viewsObject

Add our default public views



92
93
94
95
# File 'lib/generators/cambium/app_generator.rb', line 92

def add_public_views
  directory "app/views/application"
  directory "app/views/home", :force => true
end

#add_ruby_class_overridesObject

Add ruby class overrides and additions



172
173
174
# File 'lib/generators/cambium/app_generator.rb', line 172

def add_ruby_class_overrides
  template "config/initializers/_hash.rb", "config/initializers/_hash.rb"
end

#add_seed_generatorObject

Add the custom seed generator, which loads content from CSV into the database.



189
190
191
192
# File 'lib/generators/cambium/app_generator.rb', line 189

def add_seed_generator
  remove_file "db/seeds.rb"
  template "db/seeds.rb", "db/seeds.rb"
end

#add_settings_filesObject

Add our settings and private settings files



178
179
180
181
182
183
184
# File 'lib/generators/cambium/app_generator.rb', line 178

def add_settings_files
  template "config/initializers/_settings.rb",
    "config/initializers/_settings.rb"
  ['settings','private'].each do |s|
    template "config/#{s}.yml", "config/#{s}.yml"
  end
end

#add_user_model_fileObject

Copy our custom user model template into the app



150
151
152
# File 'lib/generators/cambium/app_generator.rb', line 150

def add_user_model_file
  copy_file "app/models/user.rb", "app/models/user.rb", :force => true
end

#install_deviseObject

Go through standard Devise installation



138
139
140
# File 'lib/generators/cambium/app_generator.rb', line 138

def install_devise
  generate "devise:install"
end

#install_simple_formObject

Install Simple Form automatically



166
167
168
# File 'lib/generators/cambium/app_generator.rb', line 166

def install_simple_form
  generate "simple_form:install"
end

#set_configObject

Wrap our config values up in an easier-to-type variable



35
36
37
# File 'lib/generators/cambium/app_generator.rb', line 35

def set_config
  @config = Cambium.configuration
end

#set_precompiled_assetsObject

Add modernizr to our list of assets to precompile when we’re ready to deploy



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

def set_precompiled_assets
  environment(
    "config.assets.precompile += %w( modernizr.js )",
    :env => "production"
  )
end

#set_url_configObject

Set root url for mailer in development and production



41
42
43
44
45
46
47
48
49
50
# File 'lib/generators/cambium/app_generator.rb', line 41

def set_url_config
  environment(
    "config.action_mailer.default_url_options = { :host => '#{@config.development_url}' }",
    :env => "development"
  )
  environment(
    "config.action_mailer.default_url_options = { :host => '#{@config.production_url}' }",
    :env => "production"
  )
end

#verify_configurationObject

If there is no configuration file tell the user to run that generator first (unless user has manually overridden).



23
24
25
26
27
28
29
30
# File 'lib/generators/cambium/app_generator.rb', line 23

def verify_configuration
  if options.config_check?
    unless File.exists?("#{Rails.root}/config/initializers/cambium.rb")
      help_message('cambium_prereqs')
      exit
    end
  end
end