Class: Code42Template::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Code42Template::AppBuilder
- Extended by:
- Forwardable
- Includes:
- Actions
- Defined in:
- lib/code42template/app_builder.rb
Instance Method Summary collapse
- #add_bullet_gem_configuration ⇒ Object
- #add_puma_configuration ⇒ Object
- #configure_feature_tests ⇒ Object
- #configure_quiet_assets ⇒ Object
- #configure_time_formats ⇒ Object
- #copy_dotfiles ⇒ Object
- #copy_js_root_files ⇒ Object
- #copy_js_spec_files ⇒ Object
- #copy_rspec_config ⇒ Object
- #copy_webpack_and_karma_config ⇒ Object
- #copy_webpack_entry_file ⇒ Object
- #create_database ⇒ Object
- #create_setup_script ⇒ Object
- #customize_error_pages ⇒ Object
- #gemfile ⇒ Object
- #gitignore ⇒ Object
- #heroku_adapter ⇒ Object
- #init_git ⇒ Object
- #inject_webpack_into_application_layout ⇒ Object
- #provide_setup_script ⇒ Object
- #readme ⇒ Object
- #remove_uglifier_js_compressor_config ⇒ Object
- #set_ruby_to_version_being_used ⇒ Object
- #setup_background_jobs ⇒ Object
- #setup_continuous_integration ⇒ Object
- #setup_default_directories ⇒ Object
- #setup_health_task ⇒ Object
- #setup_javascript ⇒ Object
- #setup_secret_token ⇒ Object
- #setup_spring ⇒ Object
- #setup_test_env_action_dispatch_exceptions ⇒ Object
- #setup_webpack_tasks ⇒ Object
- #use_postgres_config_template ⇒ Object
Methods included from Actions
#configure_application_file, #configure_environment, #replace_in_file
Instance Method Details
#add_bullet_gem_configuration ⇒ Object
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/code42template/app_builder.rb', line 222 def add_bullet_gem_configuration config = " config.after_initialize do\nBullet.enable = true\nBullet.bullet_logger = true\nBullet.rails_logger = true\n end\n" inject_into_file( "config/environments/development.rb", config, after: "config.file_watcher = ActiveSupport::EventedFileUpdateChecker\n", ) end |
#add_puma_configuration ⇒ Object
51 52 53 |
# File 'lib/code42template/app_builder.rb', line 51 def add_puma_configuration copy_file "puma.rb", "config/puma.rb", force: true end |
#configure_feature_tests ⇒ Object
212 213 214 215 216 217 218 219 220 |
# File 'lib/code42template/app_builder.rb', line 212 def configure_feature_tests inject_into_file( 'config/environments/test.rb', " config.webpack.dev_server.enabled = false\n", after: "Rails.application.configure do\n", ) template 'feature_helper.rb.erb', 'spec/feature_helper.rb' end |
#configure_quiet_assets ⇒ Object
142 143 144 145 146 147 148 |
# File 'lib/code42template/app_builder.rb', line 142 def configure_quiet_assets config = "config.assets.quiet = true\n RUBY\n\n inject_into_class \"config/application.rb\", \"Application\", config\nend\n" |
#configure_time_formats ⇒ Object
73 74 75 76 |
# File 'lib/code42template/app_builder.rb', line 73 def configure_time_formats remove_file "config/locales/en.yml" template "config_locales_pt-BR.yml.erb", "config/locales/pt-BR.yml" end |
#copy_dotfiles ⇒ Object
97 98 99 |
# File 'lib/code42template/app_builder.rb', line 97 def copy_dotfiles directory("dotfiles", ".") end |
#copy_js_root_files ⇒ Object
165 166 167 168 169 |
# File 'lib/code42template/app_builder.rb', line 165 def copy_js_root_files %w(package.json Procfile mocha-webpack.opts).each do |root_file| copy_file root_file, root_file end end |
#copy_js_spec_files ⇒ Object
171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/code42template/app_builder.rb', line 171 def copy_js_spec_files %w( index.browser.js index.integration.js unit/smoke.spec.js integration/smoke.spec.js ).each do |js_spec_file| copy_file( "spec/javascripts/#{js_spec_file}", "spec/javascripts/#{js_spec_file}" ) end end |
#copy_rspec_config ⇒ Object
46 47 48 49 |
# File 'lib/code42template/app_builder.rb', line 46 def copy_rspec_config copy_file 'spec_helper.rb', 'spec/spec_helper.rb' copy_file 'rails_helper.rb', 'spec/rails_helper.rb' end |
#copy_webpack_and_karma_config ⇒ Object
185 186 187 188 189 190 191 192 193 194 |
# File 'lib/code42template/app_builder.rb', line 185 def copy_webpack_and_karma_config %w( karma.conf.js webpack.config.js webpack.config.test.js webpack.config.test.browser.js ).each do |config_file| copy_file config_file, "config/#{config_file}" end end |
#copy_webpack_entry_file ⇒ Object
196 197 198 199 200 201 202 |
# File 'lib/code42template/app_builder.rb', line 196 def copy_webpack_entry_file copy_file( "application.js", "app/assets/javascripts/application.js", force: true ) end |
#create_database ⇒ Object
60 61 62 |
# File 'lib/code42template/app_builder.rb', line 60 def create_database bundle_command 'exec rake db:create db:migrate' end |
#create_setup_script ⇒ Object
109 110 111 |
# File 'lib/code42template/app_builder.rb', line 109 def create_setup_script copy_file 'setup', 'bin/setup', force: true end |
#customize_error_pages ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/code42template/app_builder.rb', line 113 def customize_error_pages =" <meta charset=\"utf-8\" />\n <meta name=\"ROBOTS\" content=\"NOODP\" />\n <meta name=\"viewport\" content=\"initial-scale=1\" />\n EOS\n\n %w(500 404 422).each do |page|\n inject_into_file \"public/\#{page}.html\", meta_tags, after: \"<head>\\n\"\n replace_in_file \"public/\#{page}.html\", /<!--.+-->\\n/, ''\n end\nend\n" |
#gemfile ⇒ Object
33 34 35 |
# File 'lib/code42template/app_builder.rb', line 33 def gemfile template "Gemfile.erb", "Gemfile" end |
#gitignore ⇒ Object
29 30 31 |
# File 'lib/code42template/app_builder.rb', line 29 def gitignore copy_file "code42_gitignore", ".gitignore" end |
#heroku_adapter ⇒ Object
247 248 249 |
# File 'lib/code42template/app_builder.rb', line 247 def heroku_adapter @heroku_adapter ||= Adapters::Heroku.new(self) end |
#init_git ⇒ Object
105 106 107 |
# File 'lib/code42template/app_builder.rb', line 105 def init_git run 'git init' end |
#inject_webpack_into_application_layout ⇒ Object
204 205 206 207 208 209 210 |
# File 'lib/code42template/app_builder.rb', line 204 def inject_webpack_into_application_layout replace_in_file( 'app/views/layouts/application.html.erb', /javascript_include_tag 'application'/, "javascript_include_tag(*webpack_asset_paths('application'))" ) end |
#provide_setup_script ⇒ Object
37 38 39 40 |
# File 'lib/code42template/app_builder.rb', line 37 def provide_setup_script template "bin_setup", "bin/setup", force: true run "chmod a+x bin/setup" end |
#readme ⇒ Object
25 26 27 |
# File 'lib/code42template/app_builder.rb', line 25 def readme template 'README.md.erb', 'README.md' end |
#remove_uglifier_js_compressor_config ⇒ Object
126 127 128 129 130 131 132 |
# File 'lib/code42template/app_builder.rb', line 126 def remove_uglifier_js_compressor_config gsub_file( 'config/environments/production.rb', /^.+config.assets.js_compressor = :uglifier.*\n/, '' ) end |
#set_ruby_to_version_being_used ⇒ Object
69 70 71 |
# File 'lib/code42template/app_builder.rb', line 69 def set_ruby_to_version_being_used create_file '.ruby-version', "#{Code42Template::RUBY_VERSION}\n" end |
#setup_background_jobs ⇒ Object
64 65 66 67 |
# File 'lib/code42template/app_builder.rb', line 64 def setup_background_jobs copy_file 'active_job.rb', 'config/initializers/active_job.rb' copy_file 'sidekiq.yml', 'config/sidekiq.yml' end |
#setup_continuous_integration ⇒ Object
101 102 103 |
# File 'lib/code42template/app_builder.rb', line 101 def setup_continuous_integration template "travis.yml.erb", '.travis.yml' end |
#setup_default_directories ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/code42template/app_builder.rb', line 78 def setup_default_directories [ 'app/views/pages', 'spec/lib', 'spec/controllers', 'spec/models', 'spec/helpers', 'spec/features', 'spec/support/matchers', 'spec/support/mixins', 'spec/support/shared_examples', 'spec/factories', 'spec/javascripts/unit', 'spec/javascripts/integration', ].each do |dir| empty_directory_with_keep_file dir end end |
#setup_health_task ⇒ Object
238 239 240 241 |
# File 'lib/code42template/app_builder.rb', line 238 def setup_health_task copy_file "health.rake", "lib/tasks/health.rake" append_file "Rakefile", %{\ntask default: "health"\n} end |
#setup_javascript ⇒ Object
154 155 156 157 158 159 160 161 162 163 |
# File 'lib/code42template/app_builder.rb', line 154 def setup_javascript copy_js_root_files copy_js_spec_files copy_webpack_and_karma_config copy_webpack_entry_file inject_webpack_into_application_layout run "npm install" end |
#setup_secret_token ⇒ Object
42 43 44 |
# File 'lib/code42template/app_builder.rb', line 42 def setup_secret_token template 'secrets.yml', 'config/secrets.yml', force: true end |
#setup_spring ⇒ Object
150 151 152 |
# File 'lib/code42template/app_builder.rb', line 150 def setup_spring bundle_command "exec spring binstub --all" end |
#setup_test_env_action_dispatch_exceptions ⇒ Object
134 135 136 137 138 139 140 |
# File 'lib/code42template/app_builder.rb', line 134 def setup_test_env_action_dispatch_exceptions gsub_file( 'config/environments/test.rb', 'config.action_dispatch.show_exceptions = false', 'config.action_dispatch.show_exceptions = true' ) end |
#setup_webpack_tasks ⇒ Object
243 244 245 |
# File 'lib/code42template/app_builder.rb', line 243 def setup_webpack_tasks copy_file "webpack.rake", "lib/tasks/webpack.rake" end |
#use_postgres_config_template ⇒ Object
55 56 57 58 |
# File 'lib/code42template/app_builder.rb', line 55 def use_postgres_config_template template 'postgresql_database.yml.erb', 'config/database.yml', force: true end |