solidus_auth_devise 2.2.0 → 2.5.2

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 (116) hide show
  1. checksums.yaml +4 -4
  2. data/.gem_release.yml +3 -8
  3. data/.github/stale.yml +17 -0
  4. data/.gitignore +12 -8
  5. data/.rubocop.yml +2 -0
  6. data/CHANGELOG.md +350 -163
  7. data/Gemfile +20 -22
  8. data/{LICENSE.md → LICENSE} +2 -2
  9. data/README.md +4 -28
  10. data/Rakefile +2 -0
  11. data/app/mailers/spree/user_mailer.rb +4 -2
  12. data/app/models/spree/user.rb +21 -19
  13. data/app/overrides/spree/admin/users/edit/_add_reset_password_form.html.erb.deface +20 -0
  14. data/bin/console +17 -0
  15. data/bin/rails +12 -4
  16. data/bin/setup +8 -0
  17. data/config/initializers/devise.rb +11 -3
  18. data/config/initializers/warden.rb +4 -2
  19. data/config/locales/en.yml +3 -1
  20. data/config/locales/it.yml +4 -4
  21. data/config/routes.rb +5 -11
  22. data/db/default/users.rb +10 -8
  23. data/db/migrate/20101026184949_create_users.rb +9 -7
  24. data/db/migrate/20101026184950_rename_columns_for_devise.rb +3 -0
  25. data/db/migrate/20101214150824_convert_user_remember_field.rb +2 -0
  26. data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -0
  27. data/db/migrate/20120605211305_make_users_email_index_unique.rb +4 -2
  28. data/db/migrate/20140904000425_add_deleted_at_to_users.rb +2 -0
  29. data/db/migrate/20141002154641_add_confirmable_to_users.rb +2 -0
  30. data/db/migrate/20190125170630_add_reset_password_token_index_to_spree_users.rb +4 -2
  31. data/db/migrate/20200417153503_add_unconfirmed_email_to_spree_users.rb +7 -0
  32. data/db/seeds.rb +2 -0
  33. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +5 -3
  34. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +11 -8
  35. data/lib/controllers/frontend/spree/user_confirmations_controller.rb +2 -0
  36. data/lib/controllers/frontend/spree/user_passwords_controller.rb +4 -1
  37. data/lib/controllers/frontend/spree/user_registrations_controller.rb +4 -0
  38. data/lib/controllers/frontend/spree/user_sessions_controller.rb +2 -0
  39. data/lib/controllers/frontend/spree/users_controller.rb +17 -14
  40. data/lib/decorators/backend/controllers/spree/admin/base_controller_decorator.rb +20 -0
  41. data/lib/decorators/backend/controllers/spree/admin/orders/customer_details_controller_decorator.rb +22 -0
  42. data/lib/{controllers/frontend → decorators/frontend/controllers}/spree/checkout_controller_decorator.rb +29 -19
  43. data/lib/generators/solidus/auth/install/install_generator.rb +16 -4
  44. data/lib/generators/solidus/auth/install/templates/config/initializers/devise.rb +2 -0
  45. data/lib/solidus/auth.rb +2 -0
  46. data/lib/solidus_auth_devise.rb +12 -12
  47. data/lib/spree/auth/devise.rb +2 -7
  48. data/lib/spree/auth/engine.rb +51 -36
  49. data/lib/spree/auth/version.rb +1 -1
  50. data/{app/models → lib}/spree/auth_configuration.rb +2 -0
  51. data/lib/spree/authentication_helpers.rb +5 -11
  52. data/lib/tasks/auth.rake +3 -1
  53. data/lib/views/backend/spree/admin/shared/_navigation_footer.html.erb +3 -3
  54. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +4 -4
  55. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +5 -7
  56. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  57. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +9 -9
  58. data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +4 -4
  59. data/lib/views/frontend/spree/checkout/registration.html.erb +4 -4
  60. data/lib/views/frontend/spree/shared/_login.html.erb +4 -4
  61. data/lib/views/frontend/spree/shared/_login_bar_items.html.erb +3 -3
  62. data/lib/views/frontend/spree/shared/_user_form.html.erb +3 -3
  63. data/lib/views/frontend/spree/user_passwords/edit.html.erb +4 -4
  64. data/lib/views/frontend/spree/user_passwords/new.html.erb +5 -7
  65. data/lib/views/frontend/spree/user_registrations/new.html.erb +3 -3
  66. data/lib/views/frontend/spree/user_sessions/authorization_failure.html.erb +1 -1
  67. data/lib/views/frontend/spree/user_sessions/new.html.erb +2 -2
  68. data/lib/views/frontend/spree/users/edit.html.erb +2 -2
  69. data/lib/views/frontend/spree/users/show.html.erb +13 -13
  70. data/solidus_auth_devise.gemspec +40 -35
  71. data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
  72. data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +2 -0
  73. data/spec/controllers/spree/base_controller_spec.rb +53 -0
  74. data/spec/controllers/spree/checkout_controller_spec.rb +5 -9
  75. data/spec/controllers/spree/products_controller_spec.rb +5 -8
  76. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -3
  77. data/spec/controllers/spree/user_registrations_controller_spec.rb +3 -2
  78. data/spec/controllers/spree/user_sessions_controller_spec.rb +14 -0
  79. data/spec/controllers/spree/users_controller_spec.rb +2 -2
  80. data/spec/factories/confirmed_user.rb +5 -3
  81. data/spec/features/account_spec.rb +4 -3
  82. data/spec/features/admin/password_reset_spec.rb +66 -10
  83. data/spec/features/admin/products_spec.rb +2 -1
  84. data/spec/features/admin/sign_in_spec.rb +2 -1
  85. data/spec/features/admin/sign_out_spec.rb +2 -1
  86. data/spec/features/admin_permissions_spec.rb +2 -1
  87. data/spec/features/change_email_spec.rb +3 -2
  88. data/spec/features/checkout_spec.rb +14 -37
  89. data/spec/features/confirmation_spec.rb +4 -3
  90. data/spec/features/order_spec.rb +2 -1
  91. data/spec/features/password_reset_spec.rb +23 -10
  92. data/spec/features/sign_in_spec.rb +2 -1
  93. data/spec/features/sign_out_spec.rb +4 -3
  94. data/spec/features/sign_up_spec.rb +2 -1
  95. data/spec/mailers/user_mailer_spec.rb +2 -1
  96. data/spec/models/order_spec.rb +2 -1
  97. data/spec/models/user_spec.rb +15 -9
  98. data/spec/spec_helper.rb +13 -9
  99. data/spec/support/ability.rb +3 -1
  100. data/spec/support/authentication_helpers.rb +2 -0
  101. data/spec/support/confirm_helpers.rb +21 -10
  102. data/spec/support/email.rb +2 -0
  103. data/spec/support/features/fill_addresses_fields.rb +29 -0
  104. data/spec/support/preferences.rb +10 -2
  105. data/spec/support/spree.rb +2 -0
  106. metadata +305 -212
  107. data/.travis.yml +0 -18
  108. data/app/overrides/auth_admin_login_navigation_bar.rb +0 -10
  109. data/app/overrides/auth_shared_login_bar.rb +0 -10
  110. data/lib/assets/javascripts/spree/backend/solidus_auth.js +0 -1
  111. data/lib/assets/javascripts/spree/frontend/solidus_auth.js +0 -1
  112. data/lib/assets/stylesheets/spree/backend/solidus_auth.css +0 -3
  113. data/lib/assets/stylesheets/spree/frontend/solidus_auth.css +0 -3
  114. data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +0 -11
  115. data/lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb +0 -15
  116. data/spec/features/admin/orders_spec.rb +0 -30
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateUsers < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  unless table_exists?("spree_users")
4
- create_table "spree_users", :force => true do |t|
5
- t.string "crypted_password", :limit => 128
6
- t.string "salt", :limit => 128
6
+ create_table "spree_users", force: true do |t|
7
+ t.string "crypted_password", limit: 128
8
+ t.string "salt", limit: 128
7
9
  t.string "email"
8
10
  t.string "remember_token"
9
11
  t.string "remember_token_expires_at"
10
12
  t.string "persistence_token"
11
13
  t.string "single_access_token"
12
14
  t.string "perishable_token"
13
- t.integer "login_count", :default => 0, :null => false
14
- t.integer "failed_login_count", :default => 0, :null => false
15
+ t.integer "login_count", default: 0, null: false
16
+ t.integer "failed_login_count", default: 0, null: false
15
17
  t.datetime "last_request_at"
16
18
  t.datetime "current_login_at"
17
19
  t.datetime "last_login_at"
@@ -20,8 +22,8 @@ class CreateUsers < SolidusSupport::Migration[4.2]
20
22
  t.string "login"
21
23
  t.integer "ship_address_id"
22
24
  t.integer "bill_address_id"
23
- t.datetime "created_at", :null => false
24
- t.datetime "updated_at", :null => false
25
+ t.datetime "created_at", null: false
26
+ t.datetime "updated_at", null: false
25
27
  t.string "openid_identifier"
26
28
  end
27
29
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RenameColumnsForDevise < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  return if column_exists?(:spree_users, :password_salt)
6
+
4
7
  rename_column :spree_users, :crypted_password, :encrypted_password
5
8
  rename_column :spree_users, :salt, :password_salt
6
9
  rename_column :spree_users, :remember_token_expires_at, :remember_created_at
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ConvertUserRememberField < SolidusSupport::Migration[4.2]
2
4
  def up
3
5
  remove_column :spree_users, :remember_created_at
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddResetPasswordSentAtToSpreeUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  Spree::User.reset_column_information
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MakeUsersEmailIndexUnique < SolidusSupport::Migration[4.2]
2
4
  def up
3
- add_index "spree_users", ["email"], :name => "email_idx_unique", :unique => true
5
+ add_index "spree_users", ["email"], name: "email_idx_unique", unique: true
4
6
  end
5
7
 
6
8
  def down
7
- remove_index "spree_users", :name => "email_idx_unique"
9
+ remove_index "spree_users", name: "email_idx_unique"
8
10
  end
9
11
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddDeletedAtToUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  add_column :spree_users, :deleted_at, :datetime
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddConfirmableToUsers < SolidusSupport::Migration[4.2]
2
4
  def change
3
5
  add_column :spree_users, :confirmation_token, :string
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddResetPasswordTokenIndexToSpreeUsers < SolidusSupport::Migration[4.2]
2
4
  # We're not using the standard Rails index name because somebody could have
3
- # already added that index to the table. By using a custom name we ensure
5
+ #  already added that index to the table. By using a custom name we ensure
4
6
  # that the index can effectively be added and removed via migrations/rollbacks
5
- # without having any impact on such installations. The index name is Rails
7
+ #  without having any impact on such installations. The index name is Rails
6
8
  # standard name + "_solidus_auth_devise"; the length is 61 chars which is
7
9
  # still OK for Sqlite, mySQL and Postgres.
8
10
  def custom_index_name
@@ -0,0 +1,7 @@
1
+ class AddUnconfirmedEmailToSpreeUsers < SolidusSupport::Migration[5.1]
2
+ def change
3
+ unless column_exists?(:spree_users, :unconfirmed_email)
4
+ add_column :spree_users, :unconfirmed_email, :string
5
+ end
6
+ end
7
+ end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'default/users.rb'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::Admin::UserPasswordsController < Devise::PasswordsController
2
4
  helper 'spree/base'
3
5
 
@@ -20,9 +22,10 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
20
22
  def create
21
23
  self.resource = resource_class.send_reset_password_instructions(params[resource_name])
22
24
 
25
+ set_flash_message(:notice, :send_instructions) if is_navigational_format?
26
+
23
27
  if resource.errors.empty?
24
- set_flash_message(:notice, :send_instructions) if is_navigational_format?
25
- respond_with resource, location: spree.admin_login_path
28
+ respond_with resource, location: admin_user_path(resource)
26
29
  else
27
30
  respond_with_navigational(resource) { render :new }
28
31
  end
@@ -39,5 +42,4 @@ class Spree::Admin::UserPasswordsController < Devise::PasswordsController
39
42
  super
40
43
  end
41
44
  end
42
-
43
45
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::Admin::UserSessionsController < Devise::SessionsController
2
4
  helper 'spree/base'
3
5
 
@@ -19,7 +21,7 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
19
21
  }
20
22
  format.js {
21
23
  user = resource.record
22
- render json: {ship_address: user.ship_address, bill_address: user.bill_address}.to_json
24
+ render json: { ship_address: user.ship_address, bill_address: user.bill_address }.to_json
23
25
  }
24
26
  end
25
27
  else
@@ -32,12 +34,13 @@ class Spree::Admin::UserSessionsController < Devise::SessionsController
32
34
  end
33
35
 
34
36
  private
35
- def accurate_title
36
- I18n.t('spree.login')
37
- end
38
37
 
39
- def redirect_back_or_default(default)
40
- redirect_to(session["spree_user_return_to"] || default)
41
- session["spree_user_return_to"] = nil
42
- end
38
+ def accurate_title
39
+ I18n.t('spree.login')
40
+ end
41
+
42
+ def redirect_back_or_default(default)
43
+ redirect_to(session["spree_user_return_to"] || default)
44
+ session["spree_user_return_to"] = nil
45
+ end
43
46
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserConfirmationsController < Devise::ConfirmationsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserPasswordsController < Devise::PasswordsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -16,8 +18,9 @@ class Spree::UserPasswordsController < Devise::PasswordsController
16
18
  def create
17
19
  self.resource = resource_class.send_reset_password_instructions(params[resource_name])
18
20
 
21
+ set_flash_message(:notice, :send_instructions) if is_navigational_format?
22
+
19
23
  if resource.errors.empty?
20
- set_flash_message(:notice, :send_instructions) if is_navigational_format?
21
24
  respond_with resource, location: spree.login_path
22
25
  else
23
26
  respond_with_navigational(resource) { render :new }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserRegistrationsController < Devise::RegistrationsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -25,6 +27,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
25
27
  end
26
28
 
27
29
  protected
30
+
28
31
  def translation_scope
29
32
  'devise.user_registrations'
30
33
  end
@@ -34,6 +37,7 @@ class Spree::UserRegistrationsController < Devise::RegistrationsController
34
37
  end
35
38
 
36
39
  private
40
+
37
41
  def spree_user_params
38
42
  params.require(:spree_user).permit(Spree::PermittedAttributes.user_attributes | [:email])
39
43
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UserSessionsController < Devise::SessionsController
2
4
  helper 'spree/base', 'spree/store'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Spree::UsersController < Spree::StoreController
2
4
  skip_before_action :set_current_order, only: :show, raise: false
3
5
  prepend_before_action :load_object, only: [:show, :edit, :update]
@@ -24,7 +26,7 @@ class Spree::UsersController < Spree::StoreController
24
26
  end
25
27
 
26
28
  def update
27
- if @user.update_attributes(user_params)
29
+ if @user.update(user_params)
28
30
  spree_current_user.reload
29
31
 
30
32
  if params[:user][:password].present?
@@ -40,20 +42,21 @@ class Spree::UsersController < Spree::StoreController
40
42
  end
41
43
 
42
44
  private
43
- def user_params
44
- params.require(:user).permit(Spree::PermittedAttributes.user_attributes | [:email])
45
- end
46
45
 
47
- def load_object
48
- @user ||= Spree::User.find_by(id: spree_current_user&.id)
49
- authorize! params[:action].to_sym, @user
50
- end
46
+ def user_params
47
+ params.require(:user).permit(Spree::PermittedAttributes.user_attributes | [:email])
48
+ end
51
49
 
52
- def authorize_actions
53
- authorize! params[:action].to_sym, Spree::User.new
54
- end
50
+ def load_object
51
+ @user ||= Spree::User.find_by(id: spree_current_user&.id)
52
+ authorize! params[:action].to_sym, @user
53
+ end
55
54
 
56
- def accurate_title
57
- I18n.t('spree.my_account')
58
- end
55
+ def authorize_actions
56
+ authorize! params[:action].to_sym, Spree::User.new
57
+ end
58
+
59
+ def accurate_title
60
+ I18n.t('spree.my_account')
61
+ end
59
62
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Admin
5
+ module BaseControllerDecorator
6
+ protected
7
+
8
+ def model_class
9
+ const_name = controller_name.classify
10
+ if Spree.const_defined?(const_name, false)
11
+ return "Spree::#{const_name}".constantize
12
+ end
13
+
14
+ nil
15
+ end
16
+
17
+ ::Spree::Admin::BaseController.prepend self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree::Admin::Orders::CustomerDetailsControllerDecorator
4
+ def self.prepended(base)
5
+ base.before_action :check_authorization
6
+ end
7
+
8
+ private
9
+
10
+ def check_authorization
11
+ load_order
12
+ session[:access_token] ||= params[:token]
13
+
14
+ resource = @order
15
+ action = params[:action].to_sym
16
+ action = :edit if action == :show # show route renders :edit for this controller
17
+
18
+ authorize! action, resource, session[:access_token]
19
+ end
20
+
21
+ Spree::Admin::Orders::CustomerDetailsController.prepend self
22
+ end
@@ -1,27 +1,32 @@
1
- Spree::CheckoutController.class_eval do
2
- prepend_before_action :check_registration,
3
- except: [:registration, :update_registration]
4
- prepend_before_action :check_authorization
1
+ # frozen_string_literal: true
5
2
 
6
- # This action builds some associations on the order, ex. addresses, which we
7
- # don't to build or save here.
8
- skip_before_action :setup_for_current_state, only: [:registration, :update_registration]
3
+ module Spree
4
+ module CheckoutControllerDecorator
5
+ def self.prepended(base)
6
+ base.before_action :check_registration, except: [:registration, :update_registration]
7
+ base.before_action :check_authorization
9
8
 
10
- def registration
11
- @user = Spree::User.new
12
- end
9
+ # This action builds some associations on the order, ex. addresses, which we
10
+ # don't to build or save here.
11
+ base.skip_before_action :setup_for_current_state, only: [:registration, :update_registration]
12
+ end
13
13
 
14
- def update_registration
15
- if params[:order][:email] =~ Devise.email_regexp && current_order.update_attributes(email: params[:order][:email])
16
- redirect_to spree.checkout_path
17
- else
18
- flash[:registration_error] = t(:email_is_invalid, scope: [:errors, :messages])
14
+ def registration
19
15
  @user = Spree::User.new
20
- render 'registration'
21
16
  end
22
- end
23
17
 
24
- private
18
+ def update_registration
19
+ if params[:order][:email] =~ Devise.email_regexp && current_order.update(email: params[:order][:email])
20
+ redirect_to spree.checkout_path
21
+ else
22
+ flash[:registration_error] = t(:email_is_invalid, scope: [:errors, :messages])
23
+ @user = Spree::User.new
24
+ render 'registration'
25
+ end
26
+ end
27
+
28
+ private
29
+
25
30
  def order_params
26
31
  params.
27
32
  fetch(:order, {}).
@@ -39,6 +44,7 @@ Spree::CheckoutController.class_eval do
39
44
  # Introduces a registration step whenever the +registration_step+ preference is true.
40
45
  def check_registration
41
46
  return unless registration_required?
47
+
42
48
  store_location
43
49
  redirect_to spree.checkout_registration_path
44
50
  end
@@ -53,7 +59,7 @@ Spree::CheckoutController.class_eval do
53
59
  end
54
60
 
55
61
  def guest_authenticated?
56
- current_order.try!(:email).present? &&
62
+ current_order&.email.present? &&
57
63
  Spree::Config[:allow_guest_checkout]
58
64
  end
59
65
 
@@ -61,6 +67,10 @@ Spree::CheckoutController.class_eval do
61
67
  # are redirected to the tokenized order url unless authenticated as a registered user.
62
68
  def completion_route
63
69
  return spree.order_path(@order) if spree_current_user
70
+
64
71
  spree.token_order_path(@order, @order.guest_token)
65
72
  end
73
+
74
+ ::Spree::CheckoutController.prepend self
75
+ end
66
76
  end
@@ -1,10 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Solidus
2
4
  module Auth
3
5
  module Generators
4
6
  class InstallGenerator < Rails::Generators::Base
7
+ class_option :auto_run_migrations, type: :boolean, default: false
8
+ class_option :skip_migrations, type: :boolean, default: false
9
+
5
10
  def self.source_paths
6
- paths = self.superclass.source_paths
7
- paths << File.expand_path('../templates', __FILE__)
11
+ paths = superclass.source_paths
12
+ paths << File.expand_path('templates', __dir__)
8
13
  paths.flatten
9
14
  end
10
15
 
@@ -13,11 +18,18 @@ module Solidus
13
18
  end
14
19
 
15
20
  def add_migrations
16
- run 'bundle exec rake railties:install:migrations FROM=solidus_auth_devise'
21
+ run 'bundle exec rake railties:install:migrations FROM=solidus_auth'
17
22
  end
18
23
 
19
24
  def run_migrations
20
- run 'bundle exec rake db:migrate'
25
+ return if options[:skip_migrations]
26
+
27
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
28
+ if run_migrations
29
+ run 'bundle exec rake db:migrate'
30
+ else
31
+ puts 'Skipping rake db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
32
+ end
21
33
  end
22
34
  end
23
35
  end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Devise.secret_key = SecureRandom.hex(50).inspect