Class: Bluebase_api::AppBuilder

Inherits:
Rails::AppBuilder
  • Object
show all
Includes:
Actions
Defined in:
lib/bluebase_api/app_builder.rb

Instance Method Summary collapse

Methods included from Actions

#action_mailer_host, #configure_environment, #replace_in_file

Instance Method Details

#add_application_ymlObject



209
210
211
212
213
214
215
216
# File 'lib/bluebase_api/app_builder.rb', line 209

def add_application_yml
  template "config/application.yml.sample.erb", "config/application.yml.sample"

  template "config/application.yml.sample.erb", "config/application.yml"
  replace_in_file "config/application.yml",
    "# Copy this file into application.yml and change env variables as necessary.",
    "# Change env variables as necessary."
end

#add_base_controllerObject



57
58
59
# File 'lib/bluebase_api/app_builder.rb', line 57

def add_base_controller
  template "app/controllers/api/base_controller.rb", "app/controllers/api/base_controller.rb"
end

#add_database_ymlObject



218
219
220
221
222
223
224
225
# File 'lib/bluebase_api/app_builder.rb', line 218

def add_database_yml
  template "config/database.yml.sample.erb", "config/database.yml.sample"

  remove_file "config/database.yml"
  template "config/database.yml.sample.erb", "config/database.yml"
  replace_in_file "config/database.yml",
    "# and then copy the file into database.yml", ""
end

#add_devise_configObject



195
196
197
# File 'lib/bluebase_api/app_builder.rb', line 195

def add_devise_config
  copy_file "config/devise.rb", "config/initializers/devise.rb"
end

#add_dot_rspecObject



40
41
42
# File 'lib/bluebase_api/app_builder.rb', line 40

def add_dot_rspec
  copy_file ".rspec", ".rspec"
end

#add_envrcObject



17
18
19
# File 'lib/bluebase_api/app_builder.rb', line 17

def add_envrc
  copy_file ".envrc", ".envrc"
end

#add_figaro_configObject



199
200
201
# File 'lib/bluebase_api/app_builder.rb', line 199

def add_figaro_config
  copy_file "config/figaro.rb", "config/initializers/figaro.rb"
end

#add_guardfileObject



36
37
38
# File 'lib/bluebase_api/app_builder.rb', line 36

def add_guardfile
  copy_file "Guardfile", "Guardfile"
end

#add_heroku_addonsObject



319
320
321
322
323
324
325
326
327
328
# File 'lib/bluebase_api/app_builder.rb', line 319

def add_heroku_addons
  config = <<-SHELL

# Heroku addons for production
heroku addons:add mandrill --app #{heroku_app_name :production}
heroku addons:add newrelic:stark --app #{heroku_app_name :production}
heroku addons:add rollbar --app #{heroku_app_name :production}
  SHELL
  append_file "bin/setup", config
end

#add_i18n_tasks_ymlObject



227
228
229
230
# File 'lib/bluebase_api/app_builder.rb', line 227

def add_i18n_tasks_yml
  file = "config/i18n-tasks.yml"
  copy_file file, file
end

#add_rubocop_and_hound_configObject



26
27
28
29
# File 'lib/bluebase_api/app_builder.rb', line 26

def add_rubocop_and_hound_config
  copy_file ".hound.yml", ".hound.yml"
  copy_file ".rubocop.yml", ".rubocop.yml"
end

#add_rvm_configObject



31
32
33
34
# File 'lib/bluebase_api/app_builder.rb', line 31

def add_rvm_config
  create_file ".ruby-gemset",  "#{app_path}\n"
  create_file ".ruby-version", "#{Bluebase_api::RUBY_VERSION}\n"
end

#add_serializers_directoryObject



67
68
69
# File 'lib/bluebase_api/app_builder.rb', line 67

def add_serializers_directory
  empty_directory_with_keep_file "app/serializers"
end

#add_setup_to_binObject

bin/ directory files



99
100
101
102
# File 'lib/bluebase_api/app_builder.rb', line 99

def add_setup_to_bin
  copy_file "bin/setup", "bin/setup"
  run "chmod a+x bin/setup"
end

#add_smtp_settingsObject



238
239
240
241
# File 'lib/bluebase_api/app_builder.rb', line 238

def add_smtp_settings
  file = "config/smtp.rb"
  copy_file file, file
end

#add_spec_dirsObject

spec/ directory files



252
253
254
255
256
# File 'lib/bluebase_api/app_builder.rb', line 252

def add_spec_dirs
  empty_directory "spec"
  empty_directory_with_keep_file "spec/features"
  empty_directory_with_keep_file "spec/factories"
end

#add_staging_environmentObject



191
192
193
# File 'lib/bluebase_api/app_builder.rb', line 191

def add_staging_environment
  template "config/staging.rb.erb", "config/environments/staging.rb"
end

#configure_actionmailerObject



268
269
270
# File 'lib/bluebase_api/app_builder.rb', line 268

def configure_actionmailer
  copy_file "spec/action_mailer.rb", "spec/support/action_mailer.rb"
end

#configure_api_directoryObject

Only front-end changes were contained here, so removed for API app.



49
50
51
# File 'lib/bluebase_api/app_builder.rb', line 49

def configure_api_directory
  empty_directory "app/controllers/api"
end

#configure_application_environmentObject

config/ directory files



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/bluebase_api/app_builder.rb', line 121

def configure_application_environment
  config = <<-RUBY

config.generators do |generate|
  generate.helper false
  generate.javascript_engine false
  generate.request_specs false
  generate.routing_specs false
  generate.stylesheets false
  generate.test_framework :rspec
  generate.view_specs false
end

  RUBY
  inject_into_class "config/application.rb", "Application", config

  config = <<-RUBY
config.active_record.default_timezone = :utc
  RUBY
  inject_into_class "config/application.rb", "Application", config

  config = <<-RUBY
config.i18n.enforce_available_locales = true
  RUBY
  inject_into_class "config/application.rb", "Application", config

  config = <<-RUBY
config.action_controller.action_on_unpermitted_parameters = :raise
  RUBY

  inject_into_class "config/application.rb", "Application", config
end

#configure_database_cleanerObject



276
277
278
279
# File 'lib/bluebase_api/app_builder.rb', line 276

def configure_database_cleaner
  copy_file "spec/database_cleaner_and_factory_girl_lint.rb",
    "spec/support/database_cleaner_and_factory_girl_lint.rb"
end

#configure_development_environmentObject



154
155
156
157
158
159
160
161
162
# File 'lib/bluebase_api/app_builder.rb', line 154

def configure_development_environment
  replace_in_file "config/environments/development.rb",
    "raise_delivery_errors = false", "raise_delivery_errors = true"
  inject_into_file "config/environments/development.rb",
    "  # Don't send emails in development\n  config.action_mailer.perform_deliveries = false",
    after: "raise_delivery_errors = true\n"
  raise_on_missing_translations_in "development"
  action_mailer_host "development", "localhost:3000"
end

#configure_factorygirlObject



264
265
266
# File 'lib/bluebase_api/app_builder.rb', line 264

def configure_factorygirl
  copy_file "spec/factory_girl.rb", "spec/support/factory_girl.rb"
end

#configure_i18nObject



272
273
274
# File 'lib/bluebase_api/app_builder.rb', line 272

def configure_i18n
  copy_file "spec/i18n.rb", "spec/support/i18n.rb"
end

#configure_production_environmentObject



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/bluebase_api/app_builder.rb', line 168

def configure_production_environment
  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"

  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: "config.serve_static_assets = false\n"

  action_mailer_host "production", "please-change-me.com"
end

#configure_rspecObject



258
259
260
261
262
# File 'lib/bluebase_api/app_builder.rb', line 258

def configure_rspec
  %w(spec/rails_helper.rb spec/spec_helper.rb).each do |file|
    copy_file file, file
  end
end

#configure_test_environmentObject



164
165
166
# File 'lib/bluebase_api/app_builder.rb', line 164

def configure_test_environment
  raise_on_missing_translations_in "test"
end

#configure_v1_directoryObject



53
54
55
# File 'lib/bluebase_api/app_builder.rb', line 53

def configure_v1_directory
  empty_directory_with_keep_file "app/controllers/api/v1"
end

#create_github_repo(repo_name) ⇒ Object



288
289
290
291
# File 'lib/bluebase_api/app_builder.rb', line 288

def create_github_repo(repo_name)
  path_addition = override_path_for_tests
  run "#{path_addition} hub create #{repo_name}"
end

#create_heroku_appsObject



293
294
295
296
297
# File 'lib/bluebase_api/app_builder.rb', line 293

def create_heroku_apps
  run_heroku "create #{heroku_app_name :production}", "production"
  run_heroku "create #{heroku_app_name :staging}", "staging"
  run_heroku "config:add RACK_ENV=staging RAILS_ENV=staging", "staging"
end

#git_initObject

git/heroku setup



284
285
286
# File 'lib/bluebase_api/app_builder.rb', line 284

def git_init
  run 'git init'
end

#readmeObject

Root directory files



8
9
10
# File 'lib/bluebase_api/app_builder.rb', line 8

def readme
  template "README.md.erb", "README.md"
end

#remove_app_assets_directoryObject



71
72
73
# File 'lib/bluebase_api/app_builder.rb', line 71

def remove_app_assets_directory
  run "rm -rf app/assets"
end

#remove_app_views_directoryObject



75
76
77
# File 'lib/bluebase_api/app_builder.rb', line 75

def remove_app_views_directory
  run "rm -rf app/views"
end

#remove_html_filesObject

public/ directory files



89
90
91
92
93
94
# File 'lib/bluebase_api/app_builder.rb', line 89

def remove_html_files
  remove_file "public/404.html"
  remove_file "public/422.html"
  remove_file "public/500.html"
  run "rm -rf public/favicon.ico"
end

#remove_lib_assets_directoryObject

lib/ directory files



107
108
109
# File 'lib/bluebase_api/app_builder.rb', line 107

def remove_lib_assets_directory
  run "rm -rf lib/assets"
end

#remove_tmp_assets_directoryObject

tmp/ directory files



114
115
116
117
# File 'lib/bluebase_api/app_builder.rb', line 114

def remove_tmp_assets_directory
  run "rm -rf tmp/cache"
  empty_directory_with_keep_file "tmp/cache"
end

#remove_vendor_assets_directoriesObject

vendor directory files



82
83
84
85
# File 'lib/bluebase_api/app_builder.rb', line 82

def remove_vendor_assets_directories
  run "rm -rf vendor"
  empty_directory_with_keep_file "vendor"
end

#replace_application_controllerObject



61
62
63
64
65
# File 'lib/bluebase_api/app_builder.rb', line 61

def replace_application_controller
  file = "app/controllers/application_controller.rb"
  remove_file file
  template "app/controllers/bluebase_api_application_controller.rb", file
end

#replace_en_ymlObject



203
204
205
206
207
# File 'lib/bluebase_api/app_builder.rb', line 203

def replace_en_yml
  file = "config/locales/en.yml"
  remove_file file
  template "config/en.yml.erb", file
end

#replace_gemfileObject



12
13
14
15
# File 'lib/bluebase_api/app_builder.rb', line 12

def replace_gemfile
  remove_file "Gemfile"
  template "Gemfile.erb", "Gemfile"
end

#replace_gitignoreObject



21
22
23
24
# File 'lib/bluebase_api/app_builder.rb', line 21

def replace_gitignore
  remove_file ".gitignore"
  copy_file "bluebase_api_gitignore", ".gitignore"
end

#replace_routes_rbObject



243
244
245
246
247
# File 'lib/bluebase_api/app_builder.rb', line 243

def replace_routes_rb
  file = "config/routes.rb"
  remove_file file
  template "config/bluebase_api_routes.rb", file
end

#replace_secrets_ymlObject



232
233
234
235
236
# File 'lib/bluebase_api/app_builder.rb', line 232

def replace_secrets_yml
  file = "config/secrets.yml"
  remove_file file
  copy_file "config/bluebase_api_secrets.yml", file
end

#set_heroku_env_variablesObject



310
311
312
313
314
315
316
317
# File 'lib/bluebase_api/app_builder.rb', line 310

def set_heroku_env_variables
  config = <<-SHELL
# Sets Heroku env variables
figaro heroku:set -a #{heroku_app_name :production} -e production
figaro heroku:set -a #{heroku_app_name :staging} -e production
  SHELL
  append_file "bin/setup", config
end

#set_heroku_remotesObject



299
300
301
302
303
304
305
306
307
308
# File 'lib/bluebase_api/app_builder.rb', line 299

def set_heroku_remotes
  remotes = <<-SHELL

# Set up the staging and production apps.
#{join_heroku_app :staging}
#{join_heroku_app :production}
  SHELL

  append_file "bin/setup", remotes
end

#set_memory_management_variableObject



330
331
332
333
334
# File 'lib/bluebase_api/app_builder.rb', line 330

def set_memory_management_variable
  %w(staging production).each do |environment|
    run_heroku "config:add NEW_RELIC_AGGRESSIVE_KEEPALIVE=1", environment
  end
end