Class: Bluebase::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Bluebase::AppBuilder
show all
- Includes:
- Actions
- Defined in:
- lib/bluebase/app_builder.rb
Instance Method Summary
collapse
Methods included from Actions
#action_mailer_host, #configure_environment, #replace_in_file
Instance Method Details
#add_application_folder_and_files_to_views ⇒ Object
64
65
66
67
68
69
70
|
# File 'lib/bluebase/app_builder.rb', line 64
def add_application_folder_and_files_to_views
base_dir = "app/views/application"
empty_directory base_dir
copy_file "app/_flash.html.slim", "#{base_dir}/_flash.html.slim"
copy_file "app/_ga_boiler.html.slim", "#{base_dir}/_ga_boiler.html.slim"
copy_file "app/_fb_meta_tags.html.slim", "#{base_dir}/_fb_meta_tags.html.slim"
end
|
#add_application_yml ⇒ Object
177
178
179
180
181
182
183
184
185
186
187
188
189
|
# File 'lib/bluebase/app_builder.rb', line 177
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."
template "config/application.yml.sample.erb", "config/application.yml.travis"
replace_in_file "config/application.yml.travis",
"# Copy this file into application.yml and change env variables as necessary.",
"# Change env variables as necessary for Travis."
end
|
#add_database_yml ⇒ Object
191
192
193
194
195
196
197
198
|
# File 'lib/bluebase/app_builder.rb', line 191
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
163
164
165
|
# File 'lib/bluebase/app_builder.rb', line 163
def add_devise_config
copy_file "config/devise.rb", "config/initializers/devise.rb"
end
|
#add_dot_rspec ⇒ Object
44
45
46
|
# File 'lib/bluebase/app_builder.rb', line 44
def add_dot_rspec
copy_file ".rspec", ".rspec"
end
|
#add_envrc ⇒ Object
17
18
19
|
# File 'lib/bluebase/app_builder.rb', line 17
def add_envrc
copy_file ".envrc", ".envrc"
end
|
#add_figaro_config ⇒ Object
167
168
169
|
# File 'lib/bluebase/app_builder.rb', line 167
def add_figaro_config
copy_file "config/figaro.rb", "config/initializers/figaro.rb"
end
|
#add_guardfile ⇒ Object
40
41
42
|
# File 'lib/bluebase/app_builder.rb', line 40
def add_guardfile
copy_file "Guardfile", "Guardfile"
end
|
#add_heroku_addons ⇒ Object
296
297
298
299
300
301
302
303
304
305
|
# File 'lib/bluebase/app_builder.rb', line 296
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
204
205
206
207
|
# File 'lib/bluebase/app_builder.rb', line 204
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/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/app_builder.rb', line 31
def add_rvm_config
create_file ".ruby-gemset", "#{app_path}\n"
create_file ".ruby-version", "#{Bluebase::RUBY_VERSION}\n"
end
|
#add_setup_to_bin ⇒ Object
81
82
83
84
|
# File 'lib/bluebase/app_builder.rb', line 81
def add_setup_to_bin
copy_file "bin/setup", "bin/setup"
run "chmod a+x bin/setup"
end
|
#add_smtp_settings ⇒ Object
215
216
217
218
|
# File 'lib/bluebase/app_builder.rb', line 215
def add_smtp_settings
file = "config/smtp.rb"
copy_file file, file
end
|
#add_spec_dirs ⇒ Object
229
230
231
232
233
|
# File 'lib/bluebase/app_builder.rb', line 229
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
159
160
161
|
# File 'lib/bluebase/app_builder.rb', line 159
def add_staging_environment
template "config/staging.rb.erb", "config/environments/staging.rb"
end
|
#add_travis_config ⇒ Object
36
37
38
|
# File 'lib/bluebase/app_builder.rb', line 36
def add_travis_config
template ".travis.yml.erb", ".travis.yml"
end
|
#add_travis_database_yml ⇒ Object
200
201
202
|
# File 'lib/bluebase/app_builder.rb', line 200
def add_travis_database_yml
template "config/database.yml.travis.erb", "config/database.yml.travis"
end
|
#add_vendor_dirs ⇒ Object
51
52
53
54
55
56
|
# File 'lib/bluebase/app_builder.rb', line 51
def add_vendor_dirs
%w(app/assets/javascripts/vendor app/assets/stylesheets/vendor).each do |dir|
run "mkdir #{dir}"
run "touch #{dir}/.keep"
end
end
|
245
246
247
|
# File 'lib/bluebase/app_builder.rb', line 245
def configure_actionmailer
copy_file "spec/action_mailer.rb", "spec/support/action_mailer.rb"
end
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/bluebase/app_builder.rb', line 89
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
|
253
254
255
256
|
# File 'lib/bluebase/app_builder.rb', line 253
def configure_database_cleaner
copy_file "spec/database_cleaner_and_factory_girl_lint.rb",
"spec/support/database_cleaner_and_factory_girl_lint.rb"
end
|
122
123
124
125
126
127
128
129
130
|
# File 'lib/bluebase/app_builder.rb', line 122
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
|
241
242
243
|
# File 'lib/bluebase/app_builder.rb', line 241
def configure_factorygirl
copy_file "spec/factory_girl.rb", "spec/support/factory_girl.rb"
end
|
249
250
251
|
# File 'lib/bluebase/app_builder.rb', line 249
def configure_i18n
copy_file "spec/i18n.rb", "spec/support/i18n.rb"
end
|
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# File 'lib/bluebase/app_builder.rb', line 136
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
|
235
236
237
238
239
|
# File 'lib/bluebase/app_builder.rb', line 235
def configure_rspec
%w(spec/rails_helper.rb spec/spec_helper.rb).each do |file|
copy_file file, file
end
end
|
132
133
134
|
# File 'lib/bluebase/app_builder.rb', line 132
def configure_test_environment
raise_on_missing_translations_in "test"
end
|
#create_github_repo(repo_name) ⇒ Object
265
266
267
268
|
# File 'lib/bluebase/app_builder.rb', line 265
def create_github_repo(repo_name)
path_addition = override_path_for_tests
run "#{path_addition} hub create #{repo_name}"
end
|
#create_heroku_apps ⇒ Object
270
271
272
273
274
|
# File 'lib/bluebase/app_builder.rb', line 270
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
261
262
263
|
# File 'lib/bluebase/app_builder.rb', line 261
def git_init
run 'git init'
end
|
#readme ⇒ Object
8
9
10
|
# File 'lib/bluebase/app_builder.rb', line 8
def readme
template "README.md.erb", "README.md"
end
|
220
221
222
223
224
|
# File 'lib/bluebase/app_builder.rb', line 220
def
replace_in_file "config/routes.rb",
/Rails\.application\.routes\.draw do.*end/m,
"Rails.application.routes.draw do\nend"
end
|
#replace_application_css_with_scss ⇒ Object
58
59
60
61
62
|
# File 'lib/bluebase/app_builder.rb', line 58
def replace_application_css_with_scss
base_dir = "app/assets/stylesheets"
remove_file "#{base_dir}/application.css"
copy_file "app/application.css.scss", "#{base_dir}/application.css.scss"
end
|
#replace_application_erb_with_slim ⇒ Object
72
73
74
75
76
|
# File 'lib/bluebase/app_builder.rb', line 72
def replace_application_erb_with_slim
base_dir = "app/views/layouts"
remove_file "#{base_dir}/application.html.erb"
copy_file "app/application.html.slim", "#{base_dir}/application.html.slim"
end
|
#replace_en_yml ⇒ Object
171
172
173
174
175
|
# File 'lib/bluebase/app_builder.rb', line 171
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/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/app_builder.rb', line 21
def replace_gitignore
remove_file ".gitignore"
copy_file "bluebase_gitignore", ".gitignore"
end
|
#replace_secrets_yml ⇒ Object
209
210
211
212
213
|
# File 'lib/bluebase/app_builder.rb', line 209
def replace_secrets_yml
file = "config/secrets.yml"
remove_file file
copy_file "config/bluebase_secrets.yml", file
end
|
#set_heroku_env_variables ⇒ Object
287
288
289
290
291
292
293
294
|
# File 'lib/bluebase/app_builder.rb', line 287
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
276
277
278
279
280
281
282
283
284
285
|
# File 'lib/bluebase/app_builder.rb', line 276
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
307
308
309
310
311
|
# File 'lib/bluebase/app_builder.rb', line 307
def set_memory_management_variable
%w(staging production).each do |environment|
run_heroku "config:add NEW_RELIC_AGGRESSIVE_KEEPALIVE=1", environment
end
end
|