Class: Chr::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Chr::AppBuilder
- Defined in:
- lib/chr/app_builder.rb
Instance Method Summary collapse
- #configure_action_mailer ⇒ Object
- #configure_devise_for_character ⇒ Object
- #configure_generators ⇒ Object
- #configure_newrelic ⇒ Object
- #configure_puma ⇒ Object
- #configure_rack_timeout ⇒ Object
- #configure_smtp ⇒ Object
- #copy_miscellaneous_files ⇒ Object
- #create_application_layout ⇒ Object
- #create_body_class_helper ⇒ Object
- #create_partials_directory ⇒ Object
- #create_shared_analytics ⇒ Object
- #create_shared_flashes ⇒ Object
- #create_shared_javascripts ⇒ Object
- #customize_error_pages ⇒ Object
- #enable_rack_canonical_host ⇒ Object
- #enable_rack_deflater ⇒ Object
- #gitignore_files ⇒ Object
- #init_git ⇒ Object
- #initialize_mongoid ⇒ Object
- #provide_dev_prime_task ⇒ Object
- #provide_setup_script ⇒ Object
- #raise_on_delivery_errors ⇒ Object
- #raise_on_unpermitted_parameters ⇒ Object
- #readme ⇒ Object
- #replace_gemfile ⇒ Object
- #set_ruby_to_version_being_used ⇒ Object
- #setup_asset_host ⇒ Object
- #setup_bundler_audit ⇒ Object
- #setup_carrierwave ⇒ Object
- #setup_character_assets ⇒ Object
- #setup_character_base_controller ⇒ Object
- #setup_character_javascripts ⇒ Object
- #setup_character_routes ⇒ Object
- #setup_character_stylesheets ⇒ Object
- #setup_character_views ⇒ Object
- #setup_devise ⇒ Object
- #setup_foreman ⇒ Object
- #setup_javascripts ⇒ Object
- #setup_secret_token ⇒ Object
- #setup_spring ⇒ Object
- #setup_staging_environment ⇒ Object
- #setup_stylesheets ⇒ Object
Instance Method Details
#configure_action_mailer ⇒ Object
190 191 192 193 194 195 196 197 |
# File 'lib/chr/app_builder.rb', line 190 def configure_action_mailer action_mailer_host "development", %{"localhost:#{ port }"} action_mailer_host "test", %{ "www.example.com" } action_mailer_host "staging", %{ ENV.fetch("HOST") } action_mailer_host "production", %{ ENV.fetch("HOST") } configure_environment "production", 'config.action_mailer.asset_host = "http://#{ ENV.fetch("ASSET_HOST") }"' end |
#configure_devise_for_character ⇒ Object
269 270 271 272 273 274 275 276 |
# File 'lib/chr/app_builder.rb', line 269 def configure_devise_for_character copy_file 'devise_overrides_passwords_controller.rb', 'app/controllers/admin/devise_overrides/passwords_controller.rb' copy_file 'devise_overrides_sessions_controller.rb', 'app/controllers/admin/devise_overrides/sessions_controller.rb' copy_file 'devise_overrides_passwords_edit.html.erb', 'app/views/admin/devise_overrides/passwords/edit.html.erb' copy_file 'devise_overrides_passwords_new.html.erb', 'app/views/admin/devise_overrides/passwords/new.html.erb' copy_file 'devise_overrides_sessions_new.html.erb', 'app/views/admin/devise_overrides/sessions/new.html.erb' end |
#configure_generators ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/chr/app_builder.rb', line 46 def configure_generators config = <<-RUBY config.generators do |generate| generate.helper false generate.javascript_engine false generate.stylesheets false end RUBY inject_into_class 'config/application.rb', 'Application', config end |
#configure_newrelic ⇒ Object
61 62 63 |
# File 'lib/chr/app_builder.rb', line 61 def configure_newrelic template 'newrelic.yml.erb', 'config/newrelic.yml' end |
#configure_puma ⇒ Object
200 201 202 |
# File 'lib/chr/app_builder.rb', line 200 def configure_puma copy_file "puma.rb", "config/puma.rb" end |
#configure_rack_timeout ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/chr/app_builder.rb', line 83 def configure_rack_timeout rack_timeout_config = <<-RUBY Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i RUBY append_file "config/environments/production.rb", rack_timeout_config end |
#configure_smtp ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/chr/app_builder.rb', line 66 def configure_smtp copy_file 'smtp.rb', 'config/smtp.rb' prepend_file 'config/environments/production.rb', %{require Rails.root.join("config/smtp")\n} config = <<-RUBY config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = SMTP_SETTINGS RUBY inject_into_file 'config/environments/production.rb', config, :after => 'config.action_mailer.raise_delivery_errors = false' end |
#copy_miscellaneous_files ⇒ Object
225 226 227 228 |
# File 'lib/chr/app_builder.rb', line 225 def copy_miscellaneous_files copy_file "errors.rb", "config/initializers/errors.rb" copy_file "json_encoding.rb", "config/initializers/json_encoding.rb" end |
#create_application_layout ⇒ Object
178 179 180 181 182 |
# File 'lib/chr/app_builder.rb', line 178 def create_application_layout template 'application_layout.html.erb.erb', 'app/views/layouts/application.html.erb', force: true end |
#create_body_class_helper ⇒ Object
185 186 187 |
# File 'lib/chr/app_builder.rb', line 185 def create_body_class_helper copy_file 'body_class_helper.rb', 'app/helpers/body_class_helper.rb' end |
#create_partials_directory ⇒ Object
158 159 160 |
# File 'lib/chr/app_builder.rb', line 158 def create_partials_directory empty_directory 'app/views/application' end |
#create_shared_analytics ⇒ Object
163 164 165 |
# File 'lib/chr/app_builder.rb', line 163 def create_shared_analytics copy_file '_analytics.html.erb', 'app/views/application/_analytics.html.erb' end |
#create_shared_flashes ⇒ Object
168 169 170 |
# File 'lib/chr/app_builder.rb', line 168 def create_shared_flashes copy_file '_flashes.html.erb', 'app/views/application/_flashes.html.erb' end |
#create_shared_javascripts ⇒ Object
173 174 175 |
# File 'lib/chr/app_builder.rb', line 173 def create_shared_javascripts copy_file '_javascript.html.erb', 'app/views/application/_javascript.html.erb' end |
#customize_error_pages ⇒ Object
231 232 233 234 235 236 237 238 239 240 241 242 |
# File 'lib/chr/app_builder.rb', line 231 def customize_error_pages =<<-EOS <meta charset="utf-8" /> <meta name="ROBOTS" content="NOODP" /> <meta name="viewport" content="initial-scale=1" /> EOS %w(500 404 422).each do |page| inject_into_file "public/#{page}.html", , after: "<head>\n" replace_in_file "public/#{page}.html", /<!--.+-->\n/, '' end end |
#enable_rack_canonical_host ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/chr/app_builder.rb', line 92 def enable_rack_canonical_host config = <<-RUBY # Ensure requests are only served from one, canonical host name config.middleware.use Rack::CanonicalHost, ENV.fetch("HOST") RUBY inject_into_file( "config/environments/production.rb", config, after: serve_static_files_line ) end |
#enable_rack_deflater ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/chr/app_builder.rb', line 106 def enable_rack_deflater config = <<-RUBY # Enable deflate / gzip compression of controller-generated responses config.middleware.use Rack::Deflater RUBY inject_into_file( "config/environments/production.rb", config, after: serve_static_files_line ) end |
#gitignore_files ⇒ Object
315 316 317 318 |
# File 'lib/chr/app_builder.rb', line 315 def gitignore_files remove_file '.gitignore' template 'application_gitignore', '.gitignore' end |
#init_git ⇒ Object
310 311 312 |
# File 'lib/chr/app_builder.rb', line 310 def init_git run 'git init' end |
#initialize_mongoid ⇒ Object
321 322 323 324 325 326 327 |
# File 'lib/chr/app_builder.rb', line 321 def initialize_mongoid generate 'mongoid:config' append_file "config/mongoid.yml", """\nproduction: clients: default: uri: <%= ENV['MONGODB_URI'] %>""" end |
#provide_dev_prime_task ⇒ Object
41 42 43 |
# File 'lib/chr/app_builder.rb', line 41 def provide_dev_prime_task copy_file 'dev.rake', 'lib/tasks/dev.rake' end |
#provide_setup_script ⇒ Object
35 36 37 38 |
# File 'lib/chr/app_builder.rb', line 35 def provide_setup_script template "bin_setup.erb", "bin/setup", port_number: port, force: true run "chmod a+x bin/setup" end |
#raise_on_delivery_errors ⇒ Object
20 21 22 23 |
# File 'lib/chr/app_builder.rb', line 20 def raise_on_delivery_errors replace_in_file 'config/environments/development.rb', 'raise_delivery_errors = false', 'raise_delivery_errors = true' end |
#raise_on_unpermitted_parameters ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/chr/app_builder.rb', line 26 def raise_on_unpermitted_parameters config = <<-RUBY config.action_controller.action_on_unpermitted_parameters = :raise RUBY inject_into_class "config/application.rb", "Application", config end |
#readme ⇒ Object
4 5 6 |
# File 'lib/chr/app_builder.rb', line 4 def readme template 'README.md.erb', 'README.md' end |
#replace_gemfile ⇒ Object
9 10 11 12 |
# File 'lib/chr/app_builder.rb', line 9 def replace_gemfile remove_file 'Gemfile' template 'Gemfile.erb', 'Gemfile' end |
#set_ruby_to_version_being_used ⇒ Object
15 16 17 |
# File 'lib/chr/app_builder.rb', line 15 def set_ruby_to_version_being_used create_file '.ruby-version', "#{Chr::RUBY_VERSION}\n" end |
#setup_asset_host ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/chr/app_builder.rb', line 121 def setup_asset_host replace_in_file 'config/environments/production.rb', "# config.action_controller.asset_host = 'http://assets.example.com'", 'config.action_controller.asset_host = ENV.fetch("ASSET_HOST")' replace_in_file 'config/initializers/assets.rb', "config.assets.version = '1.0'", 'config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")' inject_into_file( "config/environments/production.rb", ' config.static_cache_control = "public, max-age=#{1.year.to_i}"', after: serve_static_files_line ) end |
#setup_bundler_audit ⇒ Object
330 331 332 333 |
# File 'lib/chr/app_builder.rb', line 330 def setup_bundler_audit copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake" append_file "Rakefile", %{\ntask default: "bundler:audit"\n} end |
#setup_carrierwave ⇒ Object
305 306 307 |
# File 'lib/chr/app_builder.rb', line 305 def setup_carrierwave copy_file "carrierwave.rb", "config/initializers/carrierwave.rb" end |
#setup_character_assets ⇒ Object
298 299 300 301 302 |
# File 'lib/chr/app_builder.rb', line 298 def setup_character_assets replace_in_file 'config/initializers/assets.rb', "# Rails.application.config.assets.precompile += %w( search.js )", 'Rails.application.config.assets.precompile += %w( admin.js admin.css )' end |
#setup_character_base_controller ⇒ Object
264 265 266 |
# File 'lib/chr/app_builder.rb', line 264 def setup_character_base_controller copy_file 'character_base_controller.rb', 'app/controllers/admin/base_controller.rb' end |
#setup_character_javascripts ⇒ Object
293 294 295 |
# File 'lib/chr/app_builder.rb', line 293 def setup_character_javascripts copy_file 'character_admin.scss', 'app/assets/stylesheets/admin.scss' end |
#setup_character_routes ⇒ Object
258 259 260 261 |
# File 'lib/chr/app_builder.rb', line 258 def setup_character_routes remove_file 'config/routes.rb' copy_file 'routes.rb', 'config/routes.rb' end |
#setup_character_stylesheets ⇒ Object
288 289 290 |
# File 'lib/chr/app_builder.rb', line 288 def setup_character_stylesheets template 'character_admin.coffee.erb', 'app/assets/javascripts/admin.coffee' end |
#setup_character_views ⇒ Object
279 280 281 282 283 284 285 |
# File 'lib/chr/app_builder.rb', line 279 def setup_character_views template 'character_admin_layout.html.erb.erb', 'app/views/layouts/admin.html.erb', force: true copy_file 'character_admin_index.html.erb', 'app/views/admin/index.html.erb' end |
#setup_devise ⇒ Object
245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/chr/app_builder.rb', line 245 def setup_devise generate 'devise:install' replace_in_file 'config/initializers/devise.rb', '# config.scoped_views = false', 'config.scoped_views = true' replace_in_file 'config/initializers/devise.rb', '# config.sign_out_all_scopes = true', 'config.sign_out_all_scopes = false' end |
#setup_foreman ⇒ Object
205 206 207 208 |
# File 'lib/chr/app_builder.rb', line 205 def setup_foreman copy_file 'sample.env', '.sample.env' copy_file 'Procfile', 'Procfile' end |
#setup_javascripts ⇒ Object
218 219 220 221 222 |
# File 'lib/chr/app_builder.rb', line 218 def setup_javascripts remove_file "app/assets/stylesheets/application.css" copy_file "application.scss", "app/assets/stylesheets/application.scss" end |
#setup_secret_token ⇒ Object
153 154 155 |
# File 'lib/chr/app_builder.rb', line 153 def setup_secret_token template 'secrets.yml', 'config/secrets.yml', force: true end |
#setup_spring ⇒ Object
336 337 338 |
# File 'lib/chr/app_builder.rb', line 336 def setup_spring bundle_command "exec spring binstub --all" end |
#setup_staging_environment ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/chr/app_builder.rb', line 138 def setup_staging_environment staging_file = 'config/environments/staging.rb' copy_file 'staging.rb', staging_file config = <<-RUBY Rails.application.configure do # ... end RUBY append_file staging_file, config end |
#setup_stylesheets ⇒ Object
211 212 213 214 215 |
# File 'lib/chr/app_builder.rb', line 211 def setup_stylesheets remove_file "app/assets/javascripts/application.js" copy_file "application.coffee", "app/assets/javascripts/application.coffee" end |