orats 0.6.5 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +231 -58
  3. data/lib/orats/cli.rb +63 -25
  4. data/lib/orats/commands/common.rb +47 -22
  5. data/lib/orats/commands/{outdated → diff}/compare.rb +5 -4
  6. data/lib/orats/commands/diff/exec.rb +86 -0
  7. data/lib/orats/commands/{outdated → diff}/parse.rb +5 -1
  8. data/lib/orats/commands/inventory.rb +121 -0
  9. data/lib/orats/commands/{play.rb → playbook.rb} +5 -5
  10. data/lib/orats/commands/project/exec.rb +74 -0
  11. data/lib/orats/commands/{new → project}/rails.rb +57 -81
  12. data/lib/orats/commands/{new → project}/server.rb +6 -4
  13. data/lib/orats/templates/auth.rb +26 -481
  14. data/lib/orats/templates/base.rb +74 -716
  15. data/lib/orats/templates/includes/common/LICENSE +22 -0
  16. data/lib/orats/templates/includes/new/rails/.env +43 -0
  17. data/lib/orats/templates/includes/{Gemfile → new/rails/Gemfile} +1 -1
  18. data/lib/orats/templates/includes/new/rails/Procfile +3 -0
  19. data/lib/orats/templates/includes/new/rails/README.md +3 -0
  20. data/lib/orats/templates/includes/{app → new/rails/app}/assets/favicon/favicon_base.png +0 -0
  21. data/lib/orats/templates/includes/new/rails/app/helpers/application_helper.rb +53 -0
  22. data/lib/orats/templates/includes/new/rails/app/models/account.rb +40 -0
  23. data/lib/orats/templates/includes/new/rails/app/views/devise/confirmations/new.html.erb +26 -0
  24. data/lib/orats/templates/includes/new/rails/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  25. data/lib/orats/templates/includes/new/rails/app/views/devise/mailer/reset_password_instructions.html.erb +10 -0
  26. data/lib/orats/templates/includes/new/rails/app/views/devise/mailer/unlock_instructions.html.erb +8 -0
  27. data/lib/orats/templates/includes/new/rails/app/views/devise/passwords/edit.html.erb +28 -0
  28. data/lib/orats/templates/includes/new/rails/app/views/devise/passwords/new.html.erb +26 -0
  29. data/lib/orats/templates/includes/new/rails/app/views/devise/registrations/edit.html.erb +51 -0
  30. data/lib/orats/templates/includes/new/rails/app/views/devise/registrations/new.html.erb +31 -0
  31. data/lib/orats/templates/includes/new/rails/app/views/devise/sessions/new.html.erb +39 -0
  32. data/lib/orats/templates/includes/new/rails/app/views/devise/shared/_links.html.erb +38 -0
  33. data/lib/orats/templates/includes/new/rails/app/views/devise/unlocks/new.html.erb +26 -0
  34. data/lib/orats/templates/includes/new/rails/app/views/layouts/_disqus_comments_snippet.html.erb +19 -0
  35. data/lib/orats/templates/includes/new/rails/app/views/layouts/_disqus_count_snippet.html.erb +12 -0
  36. data/lib/orats/templates/includes/new/rails/app/views/layouts/_flash.html.erb +10 -0
  37. data/lib/orats/templates/includes/new/rails/app/views/layouts/_footer.html.erb +2 -0
  38. data/lib/orats/templates/includes/new/rails/app/views/layouts/_google_analytics_snippet.html.erb +13 -0
  39. data/lib/orats/templates/includes/new/rails/app/views/layouts/_google_analytics_tracker.html.erb +4 -0
  40. data/lib/orats/templates/includes/new/rails/app/views/layouts/_navigation.html.erb +18 -0
  41. data/lib/orats/templates/includes/new/rails/app/views/layouts/_navigation_auth.html.erb +15 -0
  42. data/lib/orats/templates/includes/new/rails/app/views/layouts/_navigation_links.html.erb +3 -0
  43. data/lib/orats/templates/includes/new/rails/app/views/layouts/application.html.erb +48 -0
  44. data/lib/orats/templates/includes/new/rails/app/views/pages/home.html.erb +81 -0
  45. data/lib/orats/templates/includes/new/rails/config/database.yml +19 -0
  46. data/lib/orats/templates/includes/new/rails/config/environments/staging.rb +5 -0
  47. data/lib/orats/templates/includes/new/rails/config/initializers/devise_async.rb +1 -0
  48. data/lib/orats/templates/includes/new/rails/config/initializers/mini_profiler.rb +4 -0
  49. data/lib/orats/templates/includes/new/rails/config/initializers/sidekiq.rb +16 -0
  50. data/lib/orats/templates/includes/new/rails/config/puma.rb +25 -0
  51. data/lib/orats/templates/includes/new/rails/config/secrets.yml +12 -0
  52. data/lib/orats/templates/includes/new/rails/config/sidekiq.yml +5 -0
  53. data/lib/orats/templates/includes/new/rails/config/sitemap.rb +20 -0
  54. data/lib/orats/templates/includes/new/rails/config/whenever.rb +7 -0
  55. data/lib/orats/templates/includes/new/rails/lib/backup/config.rb +116 -0
  56. data/lib/orats/templates/includes/new/rails/lib/backup/models/backup.rb +55 -0
  57. data/lib/orats/templates/includes/new/rails/lib/tasks/orats/backup.rake +18 -0
  58. data/lib/orats/templates/includes/new/rails/lib/tasks/orats/favicon.rake +48 -0
  59. data/lib/orats/templates/includes/new/rails/public/404.html +13 -0
  60. data/lib/orats/templates/includes/new/rails/public/422.html +13 -0
  61. data/lib/orats/templates/includes/new/rails/public/500.html +13 -0
  62. data/lib/orats/templates/includes/new/rails/public/502.html +13 -0
  63. data/lib/orats/templates/includes/new/rails/test/fixtures/accounts.yml +27 -0
  64. data/lib/orats/templates/includes/new/rails/test/models/account_test.rb +46 -0
  65. data/lib/orats/templates/includes/{Galaxyfile → playbook/Galaxyfile} +0 -0
  66. data/lib/orats/templates/includes/playbook/site.yml +53 -0
  67. data/lib/orats/templates/playbook.rb +115 -0
  68. data/lib/orats/version.rb +1 -1
  69. data/test/integration/cli_test.rb +122 -75
  70. data/test/test_helper.rb +16 -8
  71. metadata +63 -14
  72. data/lib/orats/commands/new/ansible.rb +0 -98
  73. data/lib/orats/commands/new/exec.rb +0 -60
  74. data/lib/orats/commands/outdated/exec.rb +0 -46
  75. data/lib/orats/templates/play.rb +0 -185
@@ -1,11 +1,12 @@
1
1
  module Orats
2
2
  module Commands
3
- module New
3
+ module Project
4
4
  module Rails
5
5
  def check_exit_conditions
6
6
  exit_if_process :not_found, 'rails', 'git'
7
7
  exit_if_process :not_running, 'postgres', 'redis'
8
8
  exit_if_path_exists
9
+ exit_if_invalid_template
9
10
  end
10
11
 
11
12
  def rails_template(command, flags = '')
@@ -18,10 +19,10 @@ module Orats
18
19
  def custom_rails_template
19
20
  log_task 'Run custom rails template'
20
21
 
21
- @options[:template].include?('://') ? url_to_string(@options[:template])
22
- : file_to_string(@options[:template])
22
+ @options[:custom].include?('://') ? url_to_string(@options[:custom])
23
+ : file_to_string(@options[:custom])
23
24
 
24
- rails_template '', "--skip --template #{@options[:template]}"
25
+ rails_template '', "--skip --template #{@options[:custom]}"
25
26
  end
26
27
 
27
28
  def gsub_postgres_info
@@ -43,7 +44,8 @@ module Orats
43
44
 
44
45
  def gsub_project_path
45
46
  log_task 'Update the project path'
46
- gsub_file "#{@active_path}/.env", ': /full/path/to/your/project', ": #{File.expand_path(@active_path)}"
47
+ gsub_file "#{@active_path}/.env", ': /home/yourname/dev/testproj',
48
+ ": #{File.expand_path(@active_path)}"
47
49
 
48
50
  git_commit 'Update the project path'
49
51
  end
@@ -83,6 +85,8 @@ module Orats
83
85
  end
84
86
 
85
87
  def generate_home_page
88
+ kill_spring_servers
89
+
86
90
  log_task 'Add pages controller with static page'
87
91
  run_from @active_path, 'bundle exec rails g controller Pages home'
88
92
 
@@ -95,89 +99,61 @@ module Orats
95
99
 
96
100
  gsub_file "#{@active_path}/test/controllers/pages_controller_test.rb",
97
101
  '"should get home"', "'expect home page'"
98
- gsub_file "#{@active_path}/app/views/pages/home.html.erb", /.*\n/, ''
99
- append_file "#{@active_path}/app/views/pages/home.html.erb" do
100
- <<-S
101
- <%
102
- title 'Welcome to Ruby on Rails'
103
- meta_description '...'
104
- heading 'Welcome to Ruby on Rails'
105
- %>
106
-
107
- <div class="row">
108
- <div class="col-sm-9">
109
- <p class="lead">
110
- You have successfully generated a project with <%= link_to 'orats', 'https://github.com/nickjj/orats' %> v#{VERSION}.
111
- </p>
112
-
113
- <hr />
114
-
115
- <p>
116
- <%= image_tag 'https://badge.fury.io/rb/orats.png', alt: 'Gem badge' %> is the latest version of orats.
117
- </p>
118
-
119
- <hr />
120
-
121
- <h3>Custom rake tasks</h3>
122
- <pre>
123
- <code>
124
- # backup the database to S3 or any other location
125
- bundle exec rake orats:backup
126
-
127
- # generate a new set of favicons to the public directory
128
- bundle exec rake orats:favicons
129
- </code>
130
- </pre>
131
-
132
- <hr />
133
-
134
- <h3>Trying to figure out what to do next?</h3>
135
- <p>
136
- Visit the wiki guide for <%= link_to 'what to look at after making a new project', 'https://github.com/nickjj/orats/wiki/What-to-look-at-after-making-a-new-project' %>.
137
- </p>
138
-
139
- <hr />
140
-
141
- <h3>Looking to deploy your application?</h3>
142
- <p>
143
- Visit the wiki guide for <%= link_to 'get your application on a server ', 'https://github.com/nickjj/orats/wiki/Get-your-application-on-a-server' %>.
144
- </p>
145
-
146
- <hr />
147
-
148
- <h3>Want to get rid of the pages controller?</h3>
149
- <p>
150
- No problem, just follow these steps:
151
- <ul>
152
- <li>
153
- Run <code>bundle exec rails d controller Pages</code>
154
- </li>
155
- <li>
156
- Remove the root route from <code>config/routes.rb</code>
157
- </li>
158
- <li>
159
- Remove the link in the navigation partial at <code>app/views/layouts/_navigation_links.html.erb</code>
160
- </li>
161
- <li>
162
- Restart the server
163
- </li>
164
- </ul>
165
- </p>
166
- </div>
167
-
168
- <div class="col-sm-3">
169
- <%= image_tag '/apple-touch-icon-228x228-precomposed.png', size: '228x228', alt: 'A ruby image I found on Google' %>
170
- </div>
171
- </div>
172
- S
173
- end
102
+
103
+ run_from @active_path, "rm app/views/pages/home.html.erb"
104
+ Commands::Common.copy_from_local_gem 'new/rails/app/views/pages/home.html.erb',
105
+ "#{@active_path}/app/views/pages/home.html.erb"
106
+ gsub_file "#{@active_path}/app/views/pages/home.html.erb",
107
+ 'vVERSION', VERSION
108
+
174
109
  git_commit 'Add pages controller with home page'
175
110
  end
176
111
 
112
+ def generate_favicons
113
+ log_task 'Add favicons'
114
+ run_rake 'orats:favicons'
115
+ git_commit 'Add favicons'
116
+ end
117
+
177
118
  def create_and_migrate_database
178
119
  run_rake 'db:create:all db:migrate'
179
120
  git_commit 'Add the database schema file'
180
121
  end
122
+
123
+ def migrate_and_seed_database
124
+ run_rake 'db:migrate db:seed'
125
+ git_commit 'Update the database schema file'
126
+ end
127
+
128
+ def template_exist?(template)
129
+ Exec::PROJECT_TEMPLATES.include?(template.to_sym)
130
+ end
131
+
132
+ private
133
+
134
+ def exit_if_invalid_template
135
+ if @options[:template].length > 0
136
+ log_task 'Check if template exists'
137
+
138
+ unless template_exist?(@options[:template])
139
+ log_error 'error', 'Cannot find template', 'message',
140
+ "'#{@options[:template]}' is not a valid template name",
141
+ true do
142
+ log_status_bottom 'tip',
143
+ 'run `orats templates` to get a list of valid templates',
144
+ :white
145
+ end
146
+
147
+ exit 1
148
+ end
149
+ end
150
+ end
151
+
152
+ def kill_spring_servers
153
+ # rails generators will lock up if a spring server is running,
154
+ # so kill them before continuing
155
+ system 'pkill -f spring'
156
+ end
181
157
  end
182
158
  end
183
159
  end
@@ -3,18 +3,20 @@ require 'timeout'
3
3
 
4
4
  module Orats
5
5
  module Commands
6
- module New
6
+ module Project
7
7
  module Server
8
+ START_COMMAND = 'bundle exec foreman start'
9
+
8
10
  def server_start
9
11
  @options[:skip_server_start] ? message = 'Start your' : message = 'Starting'
10
12
 
11
13
  puts '', '='*80
12
14
  log_status_top 'action', "#{message} server with the following commands", :cyan
13
15
  log_status_bottom 'command', "cd #{@active_path}", :magenta, true
14
- log_status_bottom 'command', 'bundle exec foreman start', :magenta
16
+ log_status_bottom 'command', START_COMMAND, :magenta
15
17
  puts '='*80, ''
16
18
 
17
- attempt_to_start
19
+ attempt_to_start unless @options[:skip_server_start]
18
20
  end
19
21
 
20
22
  private
@@ -28,7 +30,7 @@ module Orats
28
30
 
29
31
  puts
30
32
 
31
- run_from @active_path, 'bundle exec foreman start'
33
+ run_from @active_path, START_COMMAND
32
34
  end
33
35
 
34
36
  def port_taken?
@@ -43,6 +43,15 @@ end
43
43
  }
44
44
  end
45
45
 
46
+ def copy_from_local_gem(source, dest = '')
47
+ dest = source if dest.empty?
48
+
49
+ base_path = "#{File.expand_path File.dirname(__FILE__)}/includes/new/rails"
50
+
51
+ run "mkdir -p #{File.dirname(dest)}" unless Dir.exist?(File.dirname(dest))
52
+ run "cp -f #{base_path}/#{source} #{dest}"
53
+ end
54
+
46
55
  # ---
47
56
 
48
57
  def delete_app_css
@@ -119,7 +128,7 @@ end
119
128
  def add_devise_initializers
120
129
  log_task __method__
121
130
 
122
- file 'config/initializers/devise_async.rb', 'Devise::Async.backend = :sidekiq'
131
+ copy_from_local_gem 'config/initializers/devise_async.rb'
123
132
  generate 'devise:install'
124
133
  git_commit 'Add the devise and devise async initializers'
125
134
  end
@@ -242,50 +251,7 @@ end
242
251
  def add_account_model
243
252
  log_task __method__
244
253
 
245
- file 'app/models/account.rb' do
246
- <<-'S'
247
- class Account < ActiveRecord::Base
248
- ROLES = %w[admin guest]
249
-
250
- devise :database_authenticatable, :registerable, :recoverable, :rememberable,
251
- :trackable, :timeoutable, :lockable, :validatable, :async
252
-
253
- before_validation :ensure_password, on: :create
254
-
255
- after_save :invalidate_cache
256
-
257
- validates :role, inclusion: { in: ROLES }
258
-
259
- def self.serialize_from_session(key, salt)
260
- # store the current_account in the cache so we do not perform a db lookup on each authenticated page
261
- single_key = key.is_a?(Array) ? key.first : key
262
-
263
- Rails.cache.fetch("account:#{single_key}") do
264
- Account.where(id: single_key).entries.first
265
- end
266
- end
267
-
268
- def self.generate_password(length = 10)
269
- Devise.friendly_token.first(length)
270
- end
271
-
272
- def is?(role_check)
273
- role.to_sym == role_check
274
- end
275
-
276
- private
277
-
278
- def ensure_password
279
- # only generate a password if it does not exist
280
- self.password ||= Account.generate_password
281
- end
282
-
283
- def invalidate_cache
284
- Rails.cache.delete("account:#{id}")
285
- end
286
- end
287
- S
288
- end
254
+ copy_from_local_gem 'app/models/account.rb'
289
255
  git_commit 'Add account model'
290
256
  end
291
257
 
@@ -312,92 +278,14 @@ end
312
278
 
313
279
  def add_account_fixtures
314
280
  log_task __method__
315
- file 'test/fixtures/accounts.yml' do
316
- <<-S
317
- foo:
318
- id: 1
319
- email: foo@bar.com
320
- encrypted_password: passwordisnotreallyencrypted
321
- role: admin
322
- created_at: 2012-01-01 01:45:17
323
- current_sign_in_at: 2013-03-15 11:22:33
324
-
325
- no_role:
326
- id: 2
327
- email: joey@almostcool.com
328
- encrypted_password: hackthegibson
329
- created_at: 1995-09-15 08:10:12
330
-
331
- bad_role:
332
- id: 3
333
- email: hello@world.com
334
- encrypted_password: reallysecure
335
- role: ahhhh
336
- created_at: 2011-09-20 10:10:10
337
-
338
- beep:
339
- id: 4
340
- email: beep@beep.com
341
- encrypted_password: beepbeepbeep
342
- created_at: 2010-03-6 05:15:45
343
- S
344
- end
281
+ copy_from_local_gem 'test/fixtures/accounts.yml'
345
282
  git_commit 'Add account fixtures'
346
283
  end
347
284
 
348
285
  def add_account_unit_tests
349
286
  log_task __method__
350
287
 
351
- file 'test/models/account_test.rb' do
352
- <<-S
353
- require 'test_helper'
354
-
355
- class AccountTest < ActiveSupport::TestCase
356
- def setup
357
- @account = accounts(:foo)
358
- end
359
-
360
- def teardown
361
- @account = nil
362
- end
363
-
364
- test 'expect new account' do
365
- assert @account.valid?
366
- assert_not_nil @account.email
367
- assert_not_nil @account.encrypted_password
368
- end
369
-
370
- test 'expect guest to be default role' do
371
- no_role = accounts(:no_role)
372
- assert_equal 'guest', no_role.role
373
- end
374
-
375
- test 'expect invalid role to not save' do
376
- bad_role = accounts(:bad_role)
377
- assert_not bad_role.valid?
378
- end
379
-
380
- test 'expect e-mail to be unique' do
381
- duplicate = Account.create(email: 'foo@bar.com')
382
-
383
- assert_not duplicate.valid?
384
- end
385
-
386
- test 'expect random password if password is empty' do
387
- @account.password = ''
388
- @account.encrypted_password = ''
389
- @account.save
390
-
391
- random_password = Account.generate_password
392
- assert_equal 10, random_password.length
393
- end
394
-
395
- test 'expect random password of 20 characters' do
396
- assert_equal 20, Account.generate_password(20).length
397
- end
398
- end
399
- S
400
- end
288
+ copy_from_local_gem 'test/models/account_test.rb'
401
289
  git_commit 'Add account unit tests'
402
290
  end
403
291
 
@@ -436,368 +324,25 @@ end
436
324
  def add_devise_views
437
325
  log_task __method__
438
326
 
439
- file 'app/views/devise/confirmations/new.html.erb' do
440
- <<-S
441
- <%
442
- title 'Confirm'
443
- meta_description '...'
444
- heading 'Confirm'
445
- %>
446
-
447
- <div class="row">
448
- <div class="col-sm-4">
449
- <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
450
- <div class="form-group">
451
- <%= f.label :email %>
452
- <%= f.email_field :email, class: 'form-control', maxlength: 254, autofocus: true,
453
- data: {
454
- 'rule-required' => 'true',
455
- 'rule-maxlength' => '254'
456
- } %>
457
- </div>
458
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
459
- Send
460
- <% end %>
461
- <% end %>
462
- </div>
463
- <div class="col-sm-6 col-sm-offset-2">
464
- <%= render 'devise/shared/links' %>
465
- </div>
466
- </div>
467
- S
468
- end
469
-
470
- file 'app/views/devise/mailer/confirmation_instructions.html.erb' do
471
- <<-S
472
- <p>Welcome <%= @email %>!</p>
473
-
474
- <p>You can confirm your account email through the link below:</p>
475
-
476
- <p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
477
- S
478
- end
479
-
480
- file 'app/views/devise/mailer/reset_password_instructions.html.erb' do
481
- <<-S
482
- <p>Hello <%= @resource.email %>!</p>
483
-
484
- <p>Someone has requested a link to change your password. You can do this through the link below.</p>
485
-
486
- <p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
487
-
488
- <p>If you didn't request this, please ignore this email.</p>
489
- <p>Your password won't change until you access the link above and create a new one.</p>
490
- S
491
- end
492
-
493
- file 'app/views/devise/mailer/unlock_instructions.html.erb' do
494
- <<-S
495
- <p>Hello <%= @resource.email %>!</p>
496
-
497
- <p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
498
-
499
- <p>Click the link below to unlock your account:</p>
500
-
501
- <p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>
502
- S
503
- end
504
-
505
- file 'app/views/devise/passwords/edit.html.erb' do
506
- <<-S
507
- <%
508
- title 'Change your password'
509
- meta_description '...'
510
- heading 'Change your password'
511
- %>
512
-
513
- <div class="row">
514
- <div class="col-sm-4">
515
- <%= form_for resource, as: resource_name, url: password_path(resource_name), html: { method: :put } do |f| %>
516
- <%= f.hidden_field :reset_password_token %>
517
- <div class="form-group">
518
- <%= f.label :password, 'New password' %>
519
- <%= f.password_field :password, maxlength: 128, class: 'form-control', autofocus: true,
520
- data: {
521
- 'rule-required' => 'true',
522
- 'rule-minlength' => '8',
523
- 'rule-maxlength' => '128'
524
- } %>
525
- </div>
526
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
527
- Send
528
- <% end %>
529
- <% end %>
530
- </div>
531
- <div class="col-sm-6 col-sm-offset-2">
532
- <%= render 'devise/shared/links' %>
533
- </div>
534
- </div>
535
- S
536
- end
537
-
538
- file 'app/views/devise/passwords/new.html.erb' do
539
- <<-S
540
- <%
541
- title 'Forgot your password?'
542
- meta_description '...'
543
- heading 'Forgot your password?'
544
- %>
545
-
546
- <div class="row">
547
- <div class="col-sm-4">
548
- <%= form_for resource, as: resource_name, url: password_path(resource_name), html: { method: :post } do |f| %>
549
- <div class="form-group">
550
- <%= f.label :email %>
551
- <%= f.email_field :email, class: 'form-control', autofocus: true, maxlength: 254,
552
- data: {
553
- 'rule-required' => 'true',
554
- 'rule-maxlength' => '254'
555
- } %>
556
- </div>
557
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
558
- Send
559
- <% end %>
560
- <% end %>
561
- </div>
562
- <div class="col-sm-6 col-sm-offset-2">
563
- <%= render 'devise/shared/links' %>
564
- </div>
565
- </div>
566
- S
567
- end
568
-
569
- file 'app/views/devise/registrations/edit.html.erb' do
570
- <<-S
571
- <%
572
- title 'Edit your account'
573
- meta_description '...'
574
- heading 'Edit your account'
575
- %>
576
-
577
- <div class="row">
578
- <div class="col-sm-6">
579
- <%= form_for resource, as: resource_name, url: registration_path(resource_name), html: { method: :patch } do |f| %>
580
- <div class="form-group">
581
- <%= f.label :current_password %>
582
- <span class="help-block form-help-adjust-margin">
583
- <small>
584
- Supply your current password to make any changes
585
- </small>
586
- </span>
587
- <%= f.password_field :current_password, maxlength: 128, class: 'form-control',
588
- data: {
589
- 'rule-required' => 'true',
590
- 'rule-minlength' => '8',
591
- 'rule-maxlength' => '128'
592
- } %>
593
- </div>
594
- <div class="form-group">
595
- <%= f.label :email %>
596
- <%= f.email_field :email, class: 'form-control', maxlength: 254, autofocus: true %>
597
- </div>
598
- <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
599
- <h3>Currently waiting confirmation for: <%= resource.unconfirmed_email %></h3>
600
- <% end %>
601
- <div class="form-group">
602
- <%= f.label :password %>
603
- <span class="help-block form-help-adjust-margin">
604
- <small>
605
- Leave this blank if you do not want to change it
606
- </small>
607
- </span>
608
- <%= f.password_field :password, class: 'form-control' %>
609
- </div>
610
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
611
- Save
612
- <% end %>
613
- <% end %>
614
- </div>
615
- <div class="col-sm-6">
616
- <p>
617
- Unhappy? <%= button_to 'Cancel my account', registration_path(resource_name), method: :delete %>
618
- </p>
619
- </div>
620
- </div>
621
- S
622
- end
623
-
624
- file 'app/views/devise/registrations/new.html.erb' do
625
- <<-S
626
- <%
627
- title 'Register a new account'
628
- meta_description '...'
629
- heading 'Register a new account'
630
- %>
631
-
632
- <div class="row">
633
- <div class="col-sm-4">
634
- <%= form_for resource, as: resource_name, url: registration_path(resource_name) do |f| %>
635
- <div class="form-group">
636
- <%= f.label :email %>
637
- <%= f.email_field :email, class: 'form-control', maxlength: 254, autofocus: true %>
638
- </div>
639
- <div class="form-group">
640
- <%= f.label :password %>
641
- <%= f.password_field :password, maxlength: 128, class: 'form-control',
642
- data: {
643
- 'rule-required' => 'true',
644
- 'rule-minlength' => '8',
645
- 'rule-maxlength' => '128'
646
- } %>
647
- </div>
648
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
649
- Register
650
- <% end %>
651
- <% end %>
652
- </div>
653
- <div class="col-sm-6 col-sm-offset-2">
654
- <%= render 'devise/shared/links' %>
655
- </div>
656
- </div>
657
- S
658
- end
659
-
660
- file 'app/views/devise/sessions/new.html.erb' do
661
- <<-S
662
- <%
663
- title 'Sign in'
664
- meta_description '...'
665
- heading 'Sign in'
666
- %>
667
-
668
- <div class="row">
669
- <div class="col-sm-4">
670
- <%= form_for resource, as: resource_name, url: session_path(resource_name) do |f| %>
671
- <div class="form-group">
672
- <%= f.label :email %>
673
- <%= f.email_field :email, maxlength: 254, class: 'form-control', autofocus: true %>
674
- </div>
675
- <div class="form-group">
676
- <%= f.label :password %>
677
- <%= f.password_field :password, maxlength: 128, class: 'form-control',
678
- data: {
679
- 'rule-required' => 'true',
680
- 'rule-minlength' => '8',
681
- 'rule-maxlength' => '128'
682
- } %>
683
- </div>
684
- <% if devise_mapping.rememberable? -%>
685
- <div class="checkbox">
686
- <%= f.label :remember_me do %>
687
- <%= f.check_box :remember_me %> Stay signed in
688
- <% end %>
689
- </div>
690
- <% end -%>
691
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
692
- Sign in
693
- <% end %>
694
- <% end %>
695
- </div>
696
- <div class="col-sm-6 col-sm-offset-2">
697
- <h4 class="success-color">Having trouble accessing your account?</h4>
698
- <%= render 'devise/shared/links' %>
699
- </div>
700
- </div>
701
- S
702
- end
703
-
704
- file 'app/views/devise/unlocks/new.html.erb' do
705
- <<-S
706
- <%
707
- title 'Re-send unlock instructions'
708
- meta_description '...'
709
- heading 'Re-send unlock instructions'
710
- %>
711
-
712
- <div class="row">
713
- <div class="col-sm-4">
714
- <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
715
- <div class="form-group">
716
- <%= f.label :email %>
717
- <%= f.email_field :email, class: 'form-control', maxlength: 254, autofocus: true,
718
- data: {
719
- 'rule-required' => 'true',
720
- 'rule-maxlength' => '254'
721
- } %>
722
- </div>
723
- <%= button_tag type: 'submit', class: 'btn btn-primary' do %>
724
- Send
725
- <% end %>
726
- <% end %>
727
- </div>
728
- <div class="col-sm-6 col-sm-offset-2">
729
- <%= render 'devise/shared/links' %>
730
- </div>
731
- </div>
732
- S
733
- end
734
-
735
- file 'app/views/devise/shared/_links.html.erb' do
736
- <<-'S'
737
- <%= content_tag(:h4, 'Or do something else') if controller_name != 'sessions' %>
738
- <ul>
739
- <%- if controller_name != 'sessions' %>
740
- <li>
741
- <%= link_to 'Sign in', new_session_path(resource_name) %>
742
- </li>
743
- <% end -%>
744
-
745
- <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
746
- <li>
747
- <%= link_to 'Sign up', new_registration_path(resource_name) %>
748
- </li>
749
- <% end -%>
750
-
751
- <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
752
- <li>
753
- <%= link_to 'Forgot your password?', new_password_path(resource_name) %>
754
- </li>
755
- <% end -%>
756
-
757
- <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
758
- <li>
759
- <%= link_to 'Re-send confirmation instructions?', new_confirmation_path(resource_name) %>
760
- </li>
761
- <% end -%>
762
-
763
- <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
764
- <li>
765
- <%= link_to 'Are you locked out of your account?', new_unlock_path(resource_name) %>
766
- </li>
767
- <% end -%>
768
-
769
- <%- if devise_mapping.omniauthable? %>
770
- <%- resource_class.omniauth_providers.each do |provider| %>
771
- <li><%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %></li>
772
- <% end -%>
773
- <% end -%>
774
- </ul>
775
- S
776
- end
327
+ copy_from_local_gem 'app/views/devise/confirmations/new.html.erb'
328
+ copy_from_local_gem 'app/views/devise/mailer/confirmation_instructions.html.erb'
329
+ copy_from_local_gem 'app/views/devise/mailer/confirmation_instructions.html.erb'
330
+ copy_from_local_gem 'app/views/devise/mailer/reset_password_instructions.html.erb'
331
+ copy_from_local_gem 'app/views/devise/mailer/unlock_instructions.html.erb'
332
+ copy_from_local_gem 'app/views/devise/passwords/edit.html.erb'
333
+ copy_from_local_gem 'app/views/devise/passwords/new.html.erb'
334
+ copy_from_local_gem 'app/views/devise/registrations/edit.html.erb'
335
+ copy_from_local_gem 'app/views/devise/registrations/new.html.erb'
336
+ copy_from_local_gem 'app/views/devise/sessions/new.html.erb'
337
+ copy_from_local_gem 'app/views/devise/unlocks/new.html.erb'
338
+ copy_from_local_gem 'app/views/devise/shared/_links.html.erb'
777
339
  git_commit 'Add devise views'
778
340
  end
779
341
 
780
342
  def add_auth_links_to_the_navbar
781
343
  log_task __method__
782
344
 
783
- file 'app/views/layouts/_navigation_auth.html.erb', <<-S
784
- <% if current_account %>
785
- <li>
786
- <%= link_to 'Settings', edit_account_registration_path %>
787
- </li>
788
- <li>
789
- <%= link_to 'Sign out', destroy_account_session_path, method: :delete %>
790
- </li>
791
- <% else %>
792
- <li>
793
- <%= link_to 'Sign in', new_account_session_path %>
794
- </li>
795
- <li>
796
- <%= link_to 'Register', new_account_registration_path %>
797
- </li>
798
- <% end %>
799
- S
800
-
345
+ copy_from_local_gem 'app/views/layouts/_navigation_auth.html.erb'
801
346
  inject_into_file 'app/views/layouts/_navigation.html.erb', after: "</ul>\n" do
802
347
  <<-S
803
348
  <ul class="nav navbar-nav nav-auth">