Class: BlueberryRails::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- BlueberryRails::AppBuilder
- Includes:
- ActionHelpers
- Defined in:
- lib/blueberry_rails/app_builder.rb
Instance Method Summary collapse
- #add_ruby_version_file ⇒ Object
- #cache_and_compress ⇒ Object
- #configure_bin_setup ⇒ Object
- #configure_circle ⇒ Object
- #configure_generators ⇒ Object
- #configure_i18n ⇒ Object
- #configure_i18n_logger ⇒ Object
- #configure_mailcatcher ⇒ Object
- #configure_rspec ⇒ Object
- #configure_simple_form ⇒ Object
- #copy_assets_directory ⇒ Object
- #copy_custom_errors ⇒ Object
- #copy_fontcustom_config ⇒ Object
- #copy_initializers ⇒ Object
- #copy_rake_tasks ⇒ Object
- #create_application_layout ⇒ Object
- #create_database ⇒ Object
- #create_partials_directory ⇒ Object
- #create_procfile ⇒ Object
- #create_pryrc ⇒ Object
- #create_puma_config ⇒ Object
- #create_root_page ⇒ Object
- #gemfile ⇒ Object
- #generate_root_controller_and_route ⇒ Object
- #generate_rspec ⇒ Object
- #gitignore ⇒ Object
-
#gulp_files ⇒ Object
Gulp.
- #hound_config ⇒ Object
- #init_git ⇒ Object
- #init_guard ⇒ Object
- #install_devise ⇒ Object
- #raise_on_unpermitted_parameters ⇒ Object
- #readme ⇒ Object
- #replace_root_controller_spec ⇒ Object
- #replace_users_factory ⇒ Object
- #reviews_app ⇒ Object
- #secret_token ⇒ Object
- #setup_admin ⇒ Object
- #setup_gitignore ⇒ Object
- #setup_guard ⇒ Object
- #setup_mailer_hosts ⇒ Object
- #setup_rspec_support_files ⇒ Object
- #setup_secret_token ⇒ Object
- #setup_staging_environment ⇒ Object
- #test_factories_first ⇒ Object
- #use_postgres_config_template ⇒ Object
Methods included from ActionHelpers
#action_mailer_host, #configure_environment, #rename_file, #replace_in_file
Instance Method Details
#add_ruby_version_file ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/blueberry_rails/app_builder.rb', line 221 def add_ruby_version_file current_version = RUBY_VERSION.split('.').map(&:to_i) version = if current_version[0] >= 2 && current_version[1] >= 0 RUBY_VERSION else "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" end add_file '.ruby-version', "#{version}\n" end |
#cache_and_compress ⇒ Object
280 281 282 283 284 285 |
# File 'lib/blueberry_rails/app_builder.rb', line 280 def cache_and_compress configure_environment 'production', 'config.static_cache_control = \'public, max-age=31536000\'' configure_environment 'production', 'config.middleware.insert_before ActionDispatch::Static, Rack::Deflater' end |
#configure_bin_setup ⇒ Object
331 332 333 |
# File 'lib/blueberry_rails/app_builder.rb', line 331 def configure_bin_setup copy_file 'setup', 'bin/setup', force: true end |
#configure_circle ⇒ Object
217 218 219 |
# File 'lib/blueberry_rails/app_builder.rb', line 217 def configure_circle template 'circle.yml.erb', 'circle.yml' end |
#configure_generators ⇒ Object
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/blueberry_rails/app_builder.rb', line 181 def configure_generators config = "config.generators do |generate|\n generate.helper false\n generate.javascript_engine false\n generate.request_specs false\n generate.routing_specs false\n generate.stylesheets false\n generate.test_framework :rspec\n generate.view_specs false\nend\n\n RUBY\n\n inject_into_class 'config/application.rb', 'Application', config\nend\n" |
#configure_i18n ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/blueberry_rails/app_builder.rb', line 198 def configure_i18n inject_into_file "config/application.rb", "\n\n config.i18n.load_path += Dir[Rails.root.join 'config/locales/**/*.{rb,yml}']", before: "\n # Settings" inject_into_file 'config/application.rb', "\n\n config.i18n.available_locales = [:cs, :en]\n config.i18n.default_locale = :cs", before: "\n # Settings" remove_file 'config/locales/en.yml' directory 'locales', 'config/locales' end |
#configure_i18n_logger ⇒ Object
211 212 213 214 215 |
# File 'lib/blueberry_rails/app_builder.rb', line 211 def configure_i18n_logger configure_environment 'development', "# I18n debug\n I18nLogger = ActiveSupport::" \ "Logger.new(Rails.root.join('log/i18n.log'))" end |
#configure_mailcatcher ⇒ Object
174 175 176 177 178 179 |
# File 'lib/blueberry_rails/app_builder.rb', line 174 def configure_mailcatcher configure_environment 'development', 'config.action_mailer.delivery_method = :smtp' configure_environment 'development', "config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }" end |
#configure_rspec ⇒ Object
145 146 147 |
# File 'lib/blueberry_rails/app_builder.rb', line 145 def configure_rspec copy_file 'spec/spec_helper.rb', 'spec/spec_helper.rb', force: true end |
#configure_simple_form ⇒ Object
251 252 253 254 255 256 257 258 259 260 261 262 263 264 |
# File 'lib/blueberry_rails/app_builder.rb', line 251 def configure_simple_form if [:bootstrap] generate 'simple_form:install --bootstrap' replace_in_file 'config/initializers/simple_form.rb', '# config.label_text = lambda { |label, required, explicit_label| "#{required} #{label}" }', 'config.label_text = lambda { |label, required, explicit_label| "#{required} #{label}" }' else generate 'simple_form:install' end rename_file 'config/locales/simple_form.en.yml', 'config/locales/en/en.simple_form.yml' end |
#copy_assets_directory ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/blueberry_rails/app_builder.rb', line 83 def copy_assets_directory remove_file 'app/assets/stylesheets/application.css' remove_file 'app/assets/javascripts/application.js' directory 'assets', 'app/assets' remove_file 'app/assets/icons' replace_in_file 'config/initializers/assets.rb', '# Rails.application.config.assets.precompile += %w( search.js )', 'Rails.application.config.assets.precompile += %w( ie.css )' if [:administration] directory 'admin_assets', 'app/assets' replace_in_file 'config/initializers/assets.rb', '.precompile += %w( ', '.precompile += %w( admin.css admin.js ' end end |
#copy_custom_errors ⇒ Object
310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
# File 'lib/blueberry_rails/app_builder.rb', line 310 def copy_custom_errors copy_file 'controllers/errors_controller.rb', 'app/controllers/errors_controller.rb' config = "config.exceptions_app = self.routes\n\n RUBY\n\n inject_into_class 'config/application.rb', 'Application', config\n\n remove_file 'public/404.html'\n remove_file 'public/422.html'\n remove_file 'public/500.html'\nend\n" |
#copy_fontcustom_config ⇒ Object
325 326 327 328 329 |
# File 'lib/blueberry_rails/app_builder.rb', line 325 def copy_fontcustom_config copy_file 'fontcustom.yml', 'fontcustom.yml' copy_file 'assets/icons/_font_icons.scss', 'app/assets/icons/_font_icons.scss' end |
#copy_initializers ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/blueberry_rails/app_builder.rb', line 104 def copy_initializers if [:translation_engine] copy_file 'config/initializers/translation_engine.rb', 'config/initializers/translation_engine.rb' end if [:bootstrap] copy_file 'config/initializers/simple_form_bootstrap.rb', 'config/initializers/simple_form_bootstrap.rb', force: true end copy_file 'config/initializers/airbrake.rb', 'config/initializers/airbrake.rb' end |
#copy_rake_tasks ⇒ Object
303 304 305 306 307 308 |
# File 'lib/blueberry_rails/app_builder.rb', line 303 def copy_rake_tasks copy_file 'tasks/images.rake', 'lib/tasks/images.rake' if [:fontcustom] copy_file 'tasks/icons.rake', 'lib/tasks/icons.rake' end end |
#create_application_layout ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/blueberry_rails/app_builder.rb', line 71 def create_application_layout remove_file 'app/views/layouts/application.html.erb' template 'views/layouts/application.html.slim.erb', 'app/views/layouts/application.html.slim' directory 'helpers', 'app/helpers', force: true remove_file 'public/favicon.ico' directory 'public/icons', 'public' end |
#create_database ⇒ Object
130 131 132 |
# File 'lib/blueberry_rails/app_builder.rb', line 130 def create_database bundle_command 'exec rake db:create' end |
#create_partials_directory ⇒ Object
67 68 69 |
# File 'lib/blueberry_rails/app_builder.rb', line 67 def create_partials_directory directory 'views/application', 'app/views/application' end |
#create_procfile ⇒ Object
121 122 123 |
# File 'lib/blueberry_rails/app_builder.rb', line 121 def create_procfile copy_file 'Procfile', 'Procfile' end |
#create_pryrc ⇒ Object
117 118 119 |
# File 'lib/blueberry_rails/app_builder.rb', line 117 def create_pryrc copy_file 'pryrc.rb', '.pryrc' end |
#create_puma_config ⇒ Object
125 126 127 128 |
# File 'lib/blueberry_rails/app_builder.rb', line 125 def create_puma_config remove_file 'config/puma.rb' copy_file 'puma.rb', 'config/puma.rb' end |
#create_root_page ⇒ Object
342 343 344 |
# File 'lib/blueberry_rails/app_builder.rb', line 342 def create_root_page generate_root_controller_and_route end |
#gemfile ⇒ Object
13 14 15 |
# File 'lib/blueberry_rails/app_builder.rb', line 13 def gemfile template 'Gemfile_custom.erb', 'Gemfile' end |
#generate_root_controller_and_route ⇒ Object
335 336 337 338 339 340 |
# File 'lib/blueberry_rails/app_builder.rb', line 335 def generate_root_controller_and_route generate 'controller', 'root index' inject_into_file 'config/routes.rb', " root to: 'root#index'\n", after: "Rails.application.routes.draw do\n" end |
#generate_rspec ⇒ Object
134 135 136 137 138 139 140 141 142 143 |
# File 'lib/blueberry_rails/app_builder.rb', line 134 def generate_rspec generate 'rspec:install' inject_into_file 'spec/rails_helper.rb', "\n# Screenshots\n" \ "require 'capybara-screenshot/rspec'\n" \ "Capybara::Screenshot.autosave_on_failure =\n" \ " (ENV['SCR'] || ENV['AUTO_SCREENSHOT']) == '1'\n", after: "Rails is not loaded until this point!\n" end |
#gitignore ⇒ Object
9 10 11 |
# File 'lib/blueberry_rails/app_builder.rb', line 9 def gitignore template 'gitignore_custom.erb', '.gitignore' end |
#gulp_files ⇒ Object
Gulp
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
# File 'lib/blueberry_rails/app_builder.rb', line 351 def gulp_files copy_file 'gulp/gulp_helper.rb', 'app/helpers/gulp_helper.rb' remove_file 'app/assets/stylesheets/application.css' copy_file 'gulp/application.sass', 'app/assets/stylesheets/application.sass' remove_file 'app/assets/javascripts/application.js' copy_file 'gulp/application.js.coffee', 'app/assets/javascripts/application.js.coffee' application do "# Make public assets requireable in manifest files\n " \ "config.assets.paths << Rails.root.join('public', 'assets', 'stylesheets')\n " \ "config.assets.paths << Rails.root.join('public', 'assets', 'javascripts')\n" end inject_into_file 'config/environments/development.rb', "config.assets.digest = false\n", before: 'config.assets.quiet = true' copy_file 'gulp/rev_manifest.rb', 'config/initializers/rev_manifest.rb' copy_file 'gulp/global.coffee', 'gulp/assets/javascripts/global.coffee' copy_file 'gulp/message.coffee', 'gulp/assets/javascripts/message.coffee' copy_file 'gulp/global.sass', 'gulp/assets/stylesheets/global.sass' copy_file 'gulp/config.coffee' directory 'gulp/tasks' directory 'gulp/util' copy_file 'gulp/gulpfile.js', 'gulpfile.js' copy_file 'gulp/package.json', 'package.json' end |
#hound_config ⇒ Object
28 29 30 31 |
# File 'lib/blueberry_rails/app_builder.rb', line 28 def hound_config copy_file '../.hound.yml', '.hound.yml' copy_file '../.rubocop.yml', '.rubocop.yml' end |
#init_git ⇒ Object
299 300 301 |
# File 'lib/blueberry_rails/app_builder.rb', line 299 def init_git run 'git init' end |
#init_guard ⇒ Object
159 160 161 |
# File 'lib/blueberry_rails/app_builder.rb', line 159 def init_guard bundle_command 'exec guard init' end |
#install_devise ⇒ Object
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/blueberry_rails/app_builder.rb', line 231 def install_devise generate 'devise:install' generate_root_controller_and_route if [:devise_model].present? generate 'devise', [:devise_model] end if [:administration] generate 'devise', 'administrator' replace_in_file 'app/models/administrator.rb', ' :registerable,', '' end copy_file 'locales/cs/cs.devise.yml', 'config/locales/cs/cs.devise.yml' rename_file 'config/locales/devise.en.yml', 'config/locales/en/en.devise.yml' end |
#raise_on_unpermitted_parameters ⇒ Object
169 170 171 172 |
# File 'lib/blueberry_rails/app_builder.rb', line 169 def raise_on_unpermitted_parameters configure_environment 'development', 'config.action_controller.action_on_unpermitted_parameters = :raise' end |
#readme ⇒ Object
5 6 7 |
# File 'lib/blueberry_rails/app_builder.rb', line 5 def readme template 'README.md.erb', 'README.md' end |
#replace_root_controller_spec ⇒ Object
275 276 277 278 |
# File 'lib/blueberry_rails/app_builder.rb', line 275 def replace_root_controller_spec copy_file 'spec/controllers/root_controller_spec.rb', 'spec/controllers/root_controller_spec.rb', force: true end |
#replace_users_factory ⇒ Object
266 267 268 269 270 271 272 273 |
# File 'lib/blueberry_rails/app_builder.rb', line 266 def replace_users_factory copy_file 'spec/factories/users.rb', 'spec/factories/users.rb', force: true if [:administration] copy_file 'spec/factories/administrators.rb', 'spec/factories/administrators.rb', force: true end end |
#reviews_app ⇒ Object
346 347 348 |
# File 'lib/blueberry_rails/app_builder.rb', line 346 def reviews_app template 'app.json.erb', 'app.json' end |
#secret_token ⇒ Object
17 18 19 |
# File 'lib/blueberry_rails/app_builder.rb', line 17 def secret_token template 'secret_token.rb.erb', 'config/initializers/secret_token.rb' end |
#setup_admin ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/blueberry_rails/app_builder.rb', line 53 def setup_admin directory 'admin_controllers', 'app/controllers/admin' directory 'admin_views', 'app/views/admin' template 'views/layouts/admin.html.slim.erb', 'app/views/layouts/admin.html.slim' inject_into_file 'config/routes.rb', "\n namespace :admin do\n" \ " root to: 'dashboard#show'\n" \ " end\n\n", before: ' root' end |
#setup_gitignore ⇒ Object
287 288 289 290 291 292 293 294 295 296 297 |
# File 'lib/blueberry_rails/app_builder.rb', line 287 def setup_gitignore [ 'spec/lib', 'spec/controllers', 'spec/features', 'spec/support/matchers', 'spec/support/mixins', 'spec/support/shared_examples' ].each do |dir| run "mkdir -p #{dir}" run "touch #{dir}/.keep" end end |
#setup_guard ⇒ Object
163 164 165 166 167 |
# File 'lib/blueberry_rails/app_builder.rb', line 163 def setup_guard config = 'watch(%r{^spec/factories/(.+)\.rb$}) { |m| rspec.spec.call("models/factories") }' inject_into_file('Guardfile', "\n\n #{config}", before: "\nend") end |
#setup_mailer_hosts ⇒ Object
33 34 35 36 37 38 |
# File 'lib/blueberry_rails/app_builder.rb', line 33 def setup_mailer_hosts action_mailer_host 'development', "development.#{app_name}.com" action_mailer_host 'test', "test.#{app_name}.com" action_mailer_host 'staging', "staging.#{app_name}.com" action_mailer_host 'production', "#{app_name}.com" end |
#setup_rspec_support_files ⇒ Object
153 154 155 156 157 |
# File 'lib/blueberry_rails/app_builder.rb', line 153 def setup_rspec_support_files copy_file 'spec/factory_girl_syntax.rb', 'spec/support/factory_girl.rb' copy_file 'spec/database_cleaner_setup.rb', 'spec/support/database_cleaner.rb' copy_file 'spec/mail_body_helpers.rb', 'spec/support/mixins/mail_body_helpers.rb' end |
#setup_secret_token ⇒ Object
21 22 23 24 25 26 |
# File 'lib/blueberry_rails/app_builder.rb', line 21 def setup_secret_token inject_into_file 'config/secrets.yml', "\nstaging:\n" \ " secret_key_base: <%= ENV[\"SECRET_KEY_BASE\"] %>\n", after: " secret_key_base: <%= ENV[\"SECRET_KEY_BASE\"] %>\n" end |
#setup_staging_environment ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/blueberry_rails/app_builder.rb', line 45 def setup_staging_environment run 'cp config/environments/production.rb config/environments/staging.rb' replace_in_file 'config/environments/staging.rb', 'config.consider_all_requests_local = false', 'config.consider_all_requests_local = true' end |
#test_factories_first ⇒ Object
149 150 151 |
# File 'lib/blueberry_rails/app_builder.rb', line 149 def test_factories_first copy_file 'spec/factories_spec.rb', 'spec/models/factories_spec.rb' end |
#use_postgres_config_template ⇒ Object
40 41 42 43 |
# File 'lib/blueberry_rails/app_builder.rb', line 40 def use_postgres_config_template template 'database.yml.erb', 'config/database.yml', force: true template 'database.yml.erb', 'config/database.yml.sample' end |