Class: WagonRails::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- WagonRails::AppBuilder
show all
- Includes:
- Actions
- Defined in:
- lib/wagon_rails/app_builder.rb
Instance Method Summary
collapse
Methods included from Actions
#action_mailer_host, #configure_environment, #replace_in_file
Instance Method Details
#add_host_to_application_yml ⇒ Object
213
214
215
216
217
218
219
220
|
# File 'lib/wagon_rails/app_builder.rb', line 213
def add_host_to_application_yml
host = <<-EOF
production:
HOST: https://#{heroku_app_name}.herokuapp.com
EOF
append_file "config/application.yml", host
end
|
#commit(message) ⇒ Object
199
200
201
202
|
# File 'lib/wagon_rails/app_builder.rb', line 199
def commit(message)
run "git add ."
run "git commit -m '#{message}'"
end
|
142
143
144
145
|
# File 'lib/wagon_rails/app_builder.rb', line 142
def configure_action_mailer
action_mailer_host "development", %{"localhost:#{port}"}
action_mailer_host "production", %{ENV.fetch("HOST")}
end
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/wagon_rails/app_builder.rb', line 42
def configure_generators
config = <<-RUBY
config.generators do |generate|
generate.helper true
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
end
|
273
274
275
|
# File 'lib/wagon_rails/app_builder.rb', line 273
def configure_high_voltage
copy_file 'high_voltage.rb', 'config/initializers/high_voltage.rb'
end
|
129
130
131
132
|
# File 'lib/wagon_rails/app_builder.rb', line 129
def configure_i18n_for_missing_translations
raise_on_missing_translations_in("development")
raise_on_missing_translations_in("test")
end
|
155
156
157
|
# File 'lib/wagon_rails/app_builder.rb', line 155
def configure_puma
copy_file 'puma.rb', 'config/puma.rb'
end
|
134
135
136
|
# File 'lib/wagon_rails/app_builder.rb', line 134
def configure_rack_timeout
copy_file 'rack_timeout.rb', 'config/initializers/rack_timeout.rb'
end
|
138
139
140
|
# File 'lib/wagon_rails/app_builder.rb', line 138
def configure_simple_form
bundle_command "exec rails generate simple_form:install --bootstrap"
end
|
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/wagon_rails/app_builder.rb', line 60
def configure_smtp
copy_file 'smtp.rb', 'config/smtp.rb'
prepend_file 'config/environments/production.rb',
%{require Rails.root.join("config/smtp")\n}
config = <<-RUBY
config.action_mailer.delivery_method = :smtp
RUBY
inject_into_file 'config/environments/production.rb', config,
:after => 'config.action_mailer.raise_delivery_errors = true'
end
|
#copy_application_yml ⇒ Object
163
164
165
|
# File 'lib/wagon_rails/app_builder.rb', line 163
def copy_application_yml
copy_file 'application.yml', 'config/application.yml'
end
|
#copy_home ⇒ Object
269
270
271
|
# File 'lib/wagon_rails/app_builder.rb', line 269
def copy_home
copy_file 'wagon_rails_home.html.erb', 'app/views/pages/home.html.erb'
end
|
#copy_miscellaneous_files ⇒ Object
245
246
247
248
|
# File 'lib/wagon_rails/app_builder.rb', line 245
def copy_miscellaneous_files
copy_file "errors.rb", "config/initializers/errors.rb"
copy_file "json_encoding.rb", "config/initializers/json_encoding.rb"
end
|
#create_application_layout ⇒ Object
101
102
103
104
105
|
# File 'lib/wagon_rails/app_builder.rb', line 101
def create_application_layout
template 'wagon_rails_layout.html.erb.erb',
'app/views/layouts/application.html.erb',
force: true
end
|
#create_database ⇒ Object
112
113
114
|
# File 'lib/wagon_rails/app_builder.rb', line 112
def create_database
bundle_command 'exec rake db:create db:migrate'
end
|
#create_github_repo ⇒ Object
240
241
242
243
|
# File 'lib/wagon_rails/app_builder.rb', line 240
def create_github_repo
path_addition = override_path_for_tests
run "#{path_addition} hub create"
end
|
#create_heroku_app ⇒ Object
204
205
206
207
|
# File 'lib/wagon_rails/app_builder.rb', line 204
def create_heroku_app
region = "eu" run_heroku "create #{heroku_app_name} --region #{region}"
end
|
#create_partials_directory ⇒ Object
93
94
95
|
# File 'lib/wagon_rails/app_builder.rb', line 93
def create_partials_directory
empty_directory 'app/views/shared'
end
|
#create_shared_flashes ⇒ Object
97
98
99
|
# File 'lib/wagon_rails/app_builder.rb', line 97
def create_shared_flashes
copy_file '_flashes.html.erb', 'app/views/shared/_flashes.html.erb'
end
|
#customize_error_pages ⇒ Object
250
251
252
253
254
255
256
257
258
259
260
261
|
# File 'lib/wagon_rails/app_builder.rb', line 250
def customize_error_pages
meta_tags =<<-EOS
<meta charset="utf-8" />
<meta name="ROBOTS" content="NOODP" />
<meta name="viewport" content="initial-scale=1" />
EOS
%w(500 404 422).each do |page|
inject_into_file "public/#{page}.html", meta_tags, :after => "<head>\n"
replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
end
end
|
#disable_xml_params ⇒ Object
277
278
279
|
# File 'lib/wagon_rails/app_builder.rb', line 277
def disable_xml_params
copy_file 'disable_xml_params.rb', 'config/initializers/disable_xml_params.rb'
end
|
#disallow_wrapping_parameters ⇒ Object
89
90
91
|
# File 'lib/wagon_rails/app_builder.rb', line 89
def disallow_wrapping_parameters
remove_file "config/initializers/wrap_parameters.rb"
end
|
#enable_database_cleaner ⇒ Object
125
126
127
|
# File 'lib/wagon_rails/app_builder.rb', line 125
def enable_database_cleaner
copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
end
|
34
35
36
37
38
39
40
|
# File 'lib/wagon_rails/app_builder.rb', line 34
def enable_embed_authenticity_token_in_remote_forms
config = <<-RUBY
config.embed_authenticity_token_in_remote_forms = true
RUBY
inject_into_class "config/application.rb", "Application", config
end
|
#enable_rack_deflater ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/wagon_rails/app_builder.rb', line 75
def enable_rack_deflater
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: serve_static_files_line
)
end
|
#first_push ⇒ Object
315
316
317
|
# File 'lib/wagon_rails/app_builder.rb', line 315
def first_push
run "git push -u origin master"
end
|
#fix_i18n_deprecation_warning ⇒ Object
147
148
149
150
151
152
153
|
# File 'lib/wagon_rails/app_builder.rb', line 147
def fix_i18n_deprecation_warning
config = <<-RUBY
config.i18n.enforce_available_locales = true
RUBY
inject_into_class 'config/application.rb', 'Application', config
end
|
#generate_annotate ⇒ Object
def generate_pundit
generate 'pundit:install'
end
293
294
295
|
# File 'lib/wagon_rails/app_builder.rb', line 293
def generate_annotate
generate 'annotate:install'
end
|
#generate_devise ⇒ Object
281
282
283
|
# File 'lib/wagon_rails/app_builder.rb', line 281
def generate_devise
generate 'devise:install'
end
|
#generate_devise_views ⇒ Object
302
303
304
305
306
307
308
|
# File 'lib/wagon_rails/app_builder.rb', line 302
def generate_devise_views
generate 'devise:views:i18n_templates'
remove_file 'app/views/devise/registrations/new.html.erb'
copy_file 'devise_registrations_new.html.erb', 'app/views/devise/registrations/new.html.erb'
remove_file 'app/views/devise/sessions/new.html.erb'
copy_file 'devise_sessions_new.html.erb', 'app/views/devise/sessions/new.html.erb'
end
|
#generate_user ⇒ Object
285
286
287
|
# File 'lib/wagon_rails/app_builder.rb', line 285
def generate_user
generate 'devise User'
end
|
#gitignore_files ⇒ Object
184
185
186
187
188
189
190
191
192
193
|
# File 'lib/wagon_rails/app_builder.rb', line 184
def gitignore_files
remove_file '.gitignore'
copy_file 'wagon_rails_gitignore', '.gitignore'
end
|
#init_git ⇒ Object
195
196
197
|
# File 'lib/wagon_rails/app_builder.rb', line 195
def init_git
run 'git init'
end
|
#install_navbar ⇒ Object
297
298
299
300
|
# File 'lib/wagon_rails/app_builder.rb', line 297
def install_navbar
run 'curl https://raw.githubusercontent.com/lewagon/awesome-navbars/master/templates/_navbar_wagon.html.erb > app/views/shared/_navbar.html.erb'
run 'curl https://raw.githubusercontent.com/lewagon/ui-components/master/source/images/lewagon.png > app/assets/images/logo.png'
end
|
#provide_deploy_script ⇒ Object
226
227
228
229
230
231
232
233
234
235
236
237
238
|
# File 'lib/wagon_rails/app_builder.rb', line 226
def provide_deploy_script
copy_file "bin_deploy", "bin/deploy"
instructions = <<-MARKDOWN
## Deploying
$ bin/deploy
MARKDOWN
append_file "README.md", instructions
run "chmod u+x bin/deploy"
end
|
#push_env_to_heroku ⇒ Object
222
223
224
|
# File 'lib/wagon_rails/app_builder.rb', line 222
def push_env_to_heroku
run "figaro heroku:set -e production"
end
|
#raise_on_delivery_errors ⇒ Object
9
10
11
12
13
14
15
16
|
# File 'lib/wagon_rails/app_builder.rb', line 9
def raise_on_delivery_errors
%w(development production).each do |environment|
replace_in_file "config/environments/#{environment}.rb",
'raise_delivery_errors = false', 'raise_delivery_errors = true'
config = "config.action_mailer.raise_delivery_errors = true"
("config/environments/#{environment}.rb", config)
end
end
|
#raise_on_unpermitted_parameters ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/wagon_rails/app_builder.rb', line 26
def raise_on_unpermitted_parameters
config = <<-RUBY
config.action_controller.action_on_unpermitted_parameters = :raise
RUBY
inject_into_class "config/application.rb", "Application", config
end
|
#readme ⇒ Object
5
6
7
|
# File 'lib/wagon_rails/app_builder.rb', line 5
def readme
template 'README.md.erb', 'README.md'
end
|
263
264
265
266
267
|
# File 'lib/wagon_rails/app_builder.rb', line 263
def
replace_in_file 'config/routes.rb',
/Rails\.application\.routes\.draw do.*end/m,
"Rails.application.routes.draw do\nend"
end
|
#replace_gemfile ⇒ Object
116
117
118
119
|
# File 'lib/wagon_rails/app_builder.rb', line 116
def replace_gemfile
remove_file 'Gemfile'
template 'Gemfile.erb', 'Gemfile'
end
|
#set_development_delivery_method ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/wagon_rails/app_builder.rb', line 18
def set_development_delivery_method
inject_into_file(
"config/environments/development.rb",
"\n config.action_mailer.delivery_method = :letter_opener",
after: "config.action_mailer.raise_delivery_errors = true",
)
end
|
#set_heroku_remote ⇒ Object
209
210
211
|
# File 'lib/wagon_rails/app_builder.rb', line 209
def set_heroku_remote
run "git remote add heroku [email protected]:#{heroku_app_name}.git"
end
|
#set_ruby_to_version_being_used ⇒ Object
121
122
123
|
# File 'lib/wagon_rails/app_builder.rb', line 121
def set_ruby_to_version_being_used
create_file '.ruby-version', "#{WagonRails::RUBY_VERSION}\n"
end
|
#setup_application_controller ⇒ Object
310
311
312
313
|
# File 'lib/wagon_rails/app_builder.rb', line 310
def setup_application_controller
remove_file 'app/controllers/application_controller.rb'
copy_file 'application_controller.rb', 'app/controllers/application_controller.rb'
end
|
#setup_foreman ⇒ Object
159
160
161
|
# File 'lib/wagon_rails/app_builder.rb', line 159
def setup_foreman
copy_file 'Procfile', 'Procfile'
end
|
#setup_javascripts ⇒ Object
177
178
179
180
181
182
|
# File 'lib/wagon_rails/app_builder.rb', line 177
def setup_javascripts
remove_file 'app/assets/javascripts/application.js'
copy_file 'application.js', 'app/assets/javascripts/application.js'
run 'mkdir app/assets/javascripts/app'
run 'touch app/assets/javascripts/app/.keep'
end
|
#setup_paperclip ⇒ Object
167
168
169
|
# File 'lib/wagon_rails/app_builder.rb', line 167
def setup_paperclip
copy_file 'paperclip.rb', 'config/initializers/paperclip.rb'
end
|
#setup_stylesheets ⇒ Object
171
172
173
174
175
|
# File 'lib/wagon_rails/app_builder.rb', line 171
def setup_stylesheets
run 'rm -rf app/assets/stylesheets'
run 'curl -L https://github.com/lewagon/rails-stylesheets/archive/master.zip > app/assets/stylesheets.zip'
run 'cd app/assets && unzip stylesheets.zip && rm stylesheets.zip && mv rails-stylesheets-master stylesheets & cd ../..'
end
|
#use_postgres_config_template ⇒ Object
107
108
109
110
|
# File 'lib/wagon_rails/app_builder.rb', line 107
def use_postgres_config_template
template 'postgresql_database.yml.erb', 'config/database.yml',
force: true
end
|