Class: Bluebase_api::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Bluebase_api::AppBuilder
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_yml ⇒ Object
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_controller ⇒ Object
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_yml ⇒ Object
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_config ⇒ Object
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_rspec ⇒ Object
40
41
42
|
# File 'lib/bluebase_api/app_builder.rb', line 40
def add_dot_rspec
copy_file ".rspec", ".rspec"
end
|
#add_envrc ⇒ Object
17
18
19
|
# File 'lib/bluebase_api/app_builder.rb', line 17
def add_envrc
copy_file ".envrc", ".envrc"
end
|
#add_figaro_config ⇒ Object
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_guardfile ⇒ Object
36
37
38
|
# File 'lib/bluebase_api/app_builder.rb', line 36
def add_guardfile
copy_file "Guardfile", "Guardfile"
end
|
#add_heroku_addons ⇒ Object
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_yml ⇒ Object
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_config ⇒ Object
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_config ⇒ Object
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_directory ⇒ Object
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_bin ⇒ Object
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_settings ⇒ Object
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_dirs ⇒ Object
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_environment ⇒ Object
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
164
165
166
|
# File 'lib/bluebase_api/app_builder.rb', line 164
def configure_test_environment
raise_on_missing_translations_in "test"
end
|
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_apps ⇒ Object
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_init ⇒ Object
284
285
286
|
# File 'lib/bluebase_api/app_builder.rb', line 284
def git_init
run 'git init'
end
|
#readme ⇒ Object
8
9
10
|
# File 'lib/bluebase_api/app_builder.rb', line 8
def readme
template "README.md.erb", "README.md"
end
|
#remove_app_assets_directory ⇒ Object
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_directory ⇒ Object
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_files ⇒ Object
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_directory ⇒ Object
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_directory ⇒ Object
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_directories ⇒ Object
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_controller ⇒ Object
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_yml ⇒ Object
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_gemfile ⇒ Object
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_gitignore ⇒ Object
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_rb ⇒ Object
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_yml ⇒ Object
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_variables ⇒ Object
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_remotes ⇒ Object
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_variable ⇒ Object
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
|