orats 0.6.5 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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">