Class: Heartwood::AppGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Heartwood::AppGenerator
- Defined in:
- lib/generators/cambium/app_generator.rb
Instance Method Summary collapse
-
#add_application_config ⇒ Object
Add settings to application config file (config/application.rb).
-
#add_application_controller_redirects ⇒ Object
Override Devise’s default redirects and sign in/out.
-
#add_assets_initializer ⇒ Object
Assets initializer for Rails 4.1+.
-
#add_default_routes ⇒ Object
Add our default routes file, which is commented out except for the root path to the home controller.
-
#add_devise_user_model ⇒ Object
Add a User model.
-
#add_gitignore ⇒ Object
Add custom gitignore file.
-
#add_home_controller ⇒ Object
Add a default public controller, so we have a working home page when we’re done.
-
#add_js_framework ⇒ Object
We’re going to automatically install backbone unless the user has disabled it.
-
#add_js_manifest ⇒ Object
Next, we need to replace our application.js file to add backbone and its dependencies, along with our default scripts.
-
#add_layouts ⇒ Object
Our layouts are templated so we can start with some custom information.
-
#add_public_manifest ⇒ Object
Add our application.scss file.
-
#add_public_views ⇒ Object
Add our default public views.
-
#add_ruby_class_overrides ⇒ Object
Add ruby class overrides and additions.
-
#add_seed_generator ⇒ Object
Add the custom seed generator, which loads content from CSV into the database.
-
#add_settings_files ⇒ Object
Add our settings and private settings files.
-
#add_user_model_file ⇒ Object
Copy our custom user model template into the app.
-
#install_devise ⇒ Object
Go through standard Devise installation.
-
#install_simple_form ⇒ Object
Install Simple Form automatically.
-
#set_config ⇒ Object
Wrap our config values up in an easier-to-type variable.
-
#set_precompiled_assets ⇒ Object
Add modernizr to our list of assets to precompile when we’re ready to deploy.
-
#set_url_config ⇒ Object
Set root url for mailer in development and production.
-
#verify_configuration ⇒ Object
If there is no configuration file tell the user to run that generator first (unless user has manually overridden).
Instance Method Details
#add_application_config ⇒ Object
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_redirects ⇒ Object
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_initializer ⇒ Object
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_routes ⇒ Object
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_model ⇒ Object
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_gitignore ⇒ Object
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_controller ⇒ Object
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_framework ⇒ Object
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_manifest ⇒ Object
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_layouts ⇒ Object
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_manifest ⇒ Object
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_views ⇒ Object
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_overrides ⇒ Object
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_generator ⇒ Object
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_files ⇒ Object
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_file ⇒ Object
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_devise ⇒ Object
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_form ⇒ Object
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_config ⇒ Object
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 = Heartwood.configuration end |
#set_precompiled_assets ⇒ Object
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_config ⇒ Object
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_configuration ⇒ Object
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 .config_check? unless File.exists?("#{Rails.root}/config/initializers/heartwood.rb") ('heartwood_prereqs') exit end end end |