devise_invitable 1.7.5 → 2.0.5

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.

Potentially problematic release.


This version of devise_invitable might be problematic. Click here for more details.

Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.rdoc +98 -111
  4. data/app/controllers/devise/invitations_controller.rb +41 -40
  5. data/app/controllers/devise_invitable/registrations_controller.rb +11 -11
  6. data/app/views/devise/invitations/edit.html.erb +14 -8
  7. data/app/views/devise/invitations/new.html.erb +11 -7
  8. data/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
  9. data/app/views/devise/mailer/invitation_instructions.text.erb +1 -1
  10. data/config/locales/ar.yml +23 -0
  11. data/config/locales/da.yml +41 -0
  12. data/config/locales/de.yml +31 -0
  13. data/config/locales/es.yml +31 -0
  14. data/config/locales/et.yml +23 -0
  15. data/config/locales/fa.yml +31 -0
  16. data/config/locales/fr.yml +34 -0
  17. data/config/locales/it.yml +31 -0
  18. data/config/locales/ja.yml +31 -0
  19. data/config/locales/ko.yml +24 -0
  20. data/config/locales/nl.yml +32 -0
  21. data/config/locales/no.yml +17 -0
  22. data/config/locales/pl.yml +31 -0
  23. data/config/locales/pt-BR.yml +23 -0
  24. data/config/locales/pt.yml +23 -0
  25. data/config/locales/ru.yml +23 -0
  26. data/config/locales/tr.yml +24 -0
  27. data/config/locales/ua.yml +31 -0
  28. data/config/locales/vi.yml +25 -0
  29. data/config/locales/zh-HK.yml +31 -0
  30. data/config/locales/zh-TW.yml +31 -0
  31. data/lib/devise_invitable.rb +5 -4
  32. data/lib/devise_invitable/controllers/helpers.rb +3 -4
  33. data/lib/devise_invitable/inviter.rb +4 -3
  34. data/lib/devise_invitable/mailer.rb +1 -1
  35. data/lib/devise_invitable/mapping.rb +6 -5
  36. data/lib/devise_invitable/models.rb +29 -27
  37. data/lib/devise_invitable/models/authenticatable.rb +7 -1
  38. data/lib/devise_invitable/parameter_sanitizer.rb +18 -18
  39. data/lib/devise_invitable/routes.rb +5 -5
  40. data/lib/devise_invitable/version.rb +1 -1
  41. data/lib/generators/active_record/devise_invitable_generator.rb +3 -3
  42. data/lib/generators/active_record/templates/migration.rb +0 -1
  43. data/lib/generators/devise_invitable/devise_invitable_generator.rb +4 -8
  44. data/lib/generators/devise_invitable/install_generator.rb +11 -14
  45. data/lib/generators/devise_invitable/templates/simple_form_for/invitations/edit.html.erb +10 -6
  46. data/lib/generators/devise_invitable/templates/simple_form_for/invitations/new.html.erb +10 -6
  47. data/lib/generators/devise_invitable/views_generator.rb +6 -6
  48. data/test/functional/registrations_controller_test.rb +24 -25
  49. data/test/generators/views_generator_test.rb +7 -6
  50. data/test/generators_test.rb +3 -2
  51. data/test/integration/invitation_remove_test.rb +8 -8
  52. data/test/integration/invitation_test.rb +46 -46
  53. data/test/integration_tests_helper.rb +8 -9
  54. data/test/model_tests_helper.rb +5 -5
  55. data/test/models/invitable_test.rb +126 -110
  56. data/test/models_test.rb +3 -3
  57. data/test/orm/active_record.rb +2 -2
  58. data/test/orm/mongoid.rb +2 -2
  59. data/test/rails_app/app/controllers/admins_controller.rb +4 -3
  60. data/test/rails_app/app/controllers/application_controller.rb +11 -10
  61. data/test/rails_app/app/controllers/free_invitations_controller.rb +12 -9
  62. data/test/rails_app/app/controllers/users_controller.rb +2 -2
  63. data/test/rails_app/app/models/admin.rb +7 -10
  64. data/test/rails_app/app/models/octopussy.rb +4 -4
  65. data/test/rails_app/app/models/user.rb +20 -20
  66. data/test/rails_app/app/views/admins/new.html.erb +9 -5
  67. data/test/rails_app/app/views/devise/sessions/new.html.erb +14 -6
  68. data/test/rails_app/app/views/free_invitations/new.html.erb +9 -5
  69. data/test/rails_app/app/views/layouts/application.html.erb +3 -4
  70. data/test/rails_app/app/views/users/invitations/new.html.erb +15 -9
  71. data/test/rails_app/config/application.rb +6 -6
  72. data/test/rails_app/config/boot.rb +2 -2
  73. data/test/rails_app/config/credentials.yml.enc +1 -0
  74. data/test/rails_app/config/initializers/devise.rb +4 -3
  75. data/test/rails_app/config/initializers/secret_token.rb +3 -1
  76. data/test/rails_app/config/initializers/session_store.rb +1 -1
  77. data/test/rails_app/config/initializers/wrap_parameters.rb +1 -1
  78. data/test/rails_app/config/master.key +1 -0
  79. data/test/rails_app/config/routes.rb +3 -3
  80. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -2
  81. data/test/routes_test.rb +4 -4
  82. data/test/test_helper.rb +6 -19
  83. metadata +46 -22
@@ -4,7 +4,7 @@ module DeviseInvitable
4
4
  module Mailer
5
5
 
6
6
  # Deliver an invitation email
7
- def invitation_instructions(record, token, opts={})
7
+ def invitation_instructions(record, token, opts = {})
8
8
  @token = token
9
9
  devise_mail(record, :invitation_instructions, opts)
10
10
  end
@@ -1,10 +1,11 @@
1
1
  module DeviseInvitable
2
2
  module Mapping
3
3
  private
4
- def default_controllers(options)
5
- options[:controllers] ||= {}
6
- options[:controllers][:registrations] ||= "devise_invitable/registrations"
7
- super
8
- end
4
+
5
+ def default_controllers(options)
6
+ options[:controllers] ||= {}
7
+ options[:controllers][:registrations] ||= 'devise_invitable/registrations'
8
+ super
9
+ end
9
10
  end
10
11
  end
@@ -10,15 +10,15 @@ module Devise
10
10
  #
11
11
  # Configuration:
12
12
  #
13
- # invite_for: The period the generated invitation token is valid, after
14
- # this period, the invited resource won't be able to accept the invitation.
13
+ # invite_for: The period the generated invitation token is valid.
14
+ # After this period, the invited resource won't be able to accept the invitation.
15
15
  # When invite_for is 0 (the default), the invitation won't expire.
16
16
  #
17
17
  # Examples:
18
18
  #
19
19
  # User.find(1).invited_to_sign_up? # => true/false
20
- # User.invite!(:email => 'someone@example.com') # => send invitation
21
- # User.accept_invitation!(:invitation_token => '...') # => accept invitation with a token
20
+ # User.invite!(email: 'someone@example.com') # => send invitation
21
+ # User.accept_invitation!(invitation_token: '...') # => accept invitation with a token
22
22
  # User.find(1).accept_invitation! # => accept invitation
23
23
  # User.find(1).invite! # => reset invitation status and send invitation again
24
24
  module Invitable
@@ -31,34 +31,34 @@ module Devise
31
31
  included do
32
32
  include ::DeviseInvitable::Inviter
33
33
  belongs_to_options = if Devise.invited_by_class_name
34
- {:class_name => Devise.invited_by_class_name}
34
+ { class_name: Devise.invited_by_class_name }
35
35
  else
36
- {:polymorphic => true}
36
+ { polymorphic: true }
37
37
  end
38
38
  if fk = Devise.invited_by_foreign_key
39
39
  belongs_to_options[:foreign_key] = fk
40
40
  end
41
41
  if defined?(ActiveRecord) && defined?(ActiveRecord::Base) && self < ActiveRecord::Base
42
42
  counter_cache = Devise.invited_by_counter_cache
43
- belongs_to_options.merge! :counter_cache => counter_cache if counter_cache
44
- belongs_to_options.merge! :optional => true if ActiveRecord::VERSION::MAJOR >= 5
43
+ belongs_to_options.merge! counter_cache: counter_cache if counter_cache
44
+ belongs_to_options.merge! optional: true if ActiveRecord::VERSION::MAJOR >= 5
45
45
  elsif defined?(Mongoid) && defined?(Mongoid::Document) && self < Mongoid::Document && Mongoid::VERSION >= '6.0.0'
46
- belongs_to_options.merge! :optional => true
46
+ belongs_to_options.merge! optional: true
47
47
  end
48
- belongs_to :invited_by, belongs_to_options
48
+ belongs_to :invited_by, **belongs_to_options
49
49
 
50
50
  extend ActiveModel::Callbacks
51
51
  define_model_callbacks :invitation_created
52
52
  define_model_callbacks :invitation_accepted
53
53
 
54
- scope :no_active_invitation, lambda { where(:invitation_token => nil) }
54
+ scope :no_active_invitation, lambda { where(invitation_token: nil) }
55
55
  if defined?(Mongoid) && defined?(Mongoid::Document) && self < Mongoid::Document
56
56
  scope :created_by_invite, lambda { where(:invitation_created_at.ne => nil) }
57
- scope :invitation_not_accepted, lambda { where(:invitation_accepted_at => nil, :invitation_token.ne => nil) }
57
+ scope :invitation_not_accepted, lambda { where(invitation_accepted_at: nil, :invitation_token.ne => nil) }
58
58
  scope :invitation_accepted, lambda { where(:invitation_accepted_at.ne => nil) }
59
59
  else
60
60
  scope :created_by_invite, lambda { where(arel_table[:invitation_created_at].not_eq(nil)) }
61
- scope :invitation_not_accepted, lambda { where(arel_table[:invitation_token].not_eq(nil)).where(:invitation_accepted_at => nil) }
61
+ scope :invitation_not_accepted, lambda { where(arel_table[:invitation_token].not_eq(nil)).where(invitation_accepted_at: nil) }
62
62
  scope :invitation_accepted, lambda { where(arel_table[:invitation_accepted_at].not_eq(nil)) }
63
63
 
64
64
  callbacks = [
@@ -158,7 +158,7 @@ module Devise
158
158
  self.downcase_keys if new_record_and_responds_to?(:downcase_keys)
159
159
  self.strip_whitespace if new_record_and_responds_to?(:strip_whitespace)
160
160
 
161
- if save(:validate => false)
161
+ if save(validate: false)
162
162
  self.invited_by.decrement_invitation_limit! if !was_invited and self.invited_by.present?
163
163
  deliver_invitation(options) unless skip_invitation
164
164
  end
@@ -274,7 +274,7 @@ module Devise
274
274
  end
275
275
 
276
276
  def generate_invitation_token!
277
- generate_invitation_token && save(:validate => false)
277
+ generate_invitation_token && save(validate: false)
278
278
  end
279
279
 
280
280
  def new_record_and_responds_to?(method)
@@ -298,7 +298,7 @@ module Devise
298
298
  # email is resent unless resend_invitation is set to false.
299
299
  # Attributes must contain the user's email, other attributes will be
300
300
  # set in the record
301
- def _invite(attributes={}, invited_by=nil, options = {}, &block)
301
+ def _invite(attributes = {}, invited_by = nil, options = {}, &block)
302
302
  invite_key_array = invite_key_fields
303
303
  attributes_hash = {}
304
304
  invite_key_array.each do |k,v|
@@ -328,12 +328,12 @@ module Devise
328
328
  [invitable, mail]
329
329
  end
330
330
 
331
- def invite!(attributes={}, invited_by=nil, options = {}, &block)
331
+ def invite!(attributes = {}, invited_by = nil, options = {}, &block)
332
332
  attr_hash = ActiveSupport::HashWithIndifferentAccess.new(attributes.to_h)
333
333
  _invite(attr_hash, invited_by, options, &block).first
334
334
  end
335
335
 
336
- def invite_mail!(attributes={}, invited_by=nil, options = {}, &block)
336
+ def invite_mail!(attributes = {}, invited_by = nil, options = {}, &block)
337
337
  _invite(attributes, invited_by, options, &block).last
338
338
  end
339
339
 
@@ -342,7 +342,7 @@ module Devise
342
342
  # the record. If not user is found, returns a new user containing an
343
343
  # error in invitation_token attribute.
344
344
  # Attributes must contain invitation_token, password and confirmation
345
- def accept_invitation!(attributes={})
345
+ def accept_invitation!(attributes = {})
346
346
  original_token = attributes.delete(:invitation_token)
347
347
  invitable = find_by_invitation_token(original_token, false)
348
348
  if invitable.errors.empty?
@@ -391,15 +391,17 @@ module Devise
391
391
 
392
392
  private
393
393
 
394
- # The random password, as set after an invitation, must conform
395
- # to any password format validation rules of the application.
396
- # This default fixes the most common scenarios: Passwords must contain
397
- # lower + upper case, a digit and a symbol.
398
- # For more unusual rules, this method can be overridden.
399
- def random_password
400
- "aA1!" + Devise.friendly_token[0, 20]
401
- end
394
+ # The random password, as set after an invitation, must conform
395
+ # to any password format validation rules of the application.
396
+ # This default fixes the most common scenarios: Passwords must contain
397
+ # lower + upper case, a digit and a symbol.
398
+ # For more unusual rules, this method can be overridden.
399
+ def random_password
400
+ length = respond_to?(:password_length) ? password_length : Devise.password_length
402
401
 
402
+ prefix = 'aA1!'
403
+ prefix + Devise.friendly_token(length.last - prefix.length)
404
+ end
403
405
  end
404
406
  end
405
407
  end
@@ -1,11 +1,17 @@
1
1
  module Devise
2
2
  module Models
3
3
  module Authenticatable
4
- BLACKLIST_FOR_SERIALIZATION.concat %i[
4
+ list = %i[
5
5
  invitation_token invitation_created_at invitation_sent_at
6
6
  invitation_accepted_at invitation_limit invited_by_type
7
7
  invited_by_id invitations_count
8
8
  ]
9
+
10
+ if defined?(UNSAFE_ATTRIBUTES_FOR_SERIALIZATION)
11
+ UNSAFE_ATTRIBUTES_FOR_SERIALIZATION.concat(list)
12
+ else
13
+ BLACKLIST_FOR_SERIALIZATION.concat(list)
14
+ end
9
15
  end
10
16
  end
11
17
  end
@@ -12,27 +12,27 @@ module DeviseInvitable
12
12
 
13
13
  private
14
14
 
15
- if defined?(Devise::BaseSanitizer)
16
- def permit(keys)
17
- default_params.permit(*Array(keys))
18
- end
15
+ if defined?(Devise::BaseSanitizer)
16
+ def permit(keys)
17
+ default_params.permit(*Array(keys))
18
+ end
19
19
 
20
- def attributes_for(kind)
21
- case kind
22
- when :invite
23
- resource_class.respond_to?(:invite_key_fields) ? resource_class.invite_key_fields : []
24
- when :accept_invitation
25
- [:password, :password_confirmation, :invitation_token]
26
- else
20
+ def attributes_for(kind)
21
+ case kind
22
+ when :invite
23
+ resource_class.respond_to?(:invite_key_fields) ? resource_class.invite_key_fields : []
24
+ when :accept_invitation
25
+ [:password, :password_confirmation, :invitation_token]
26
+ else
27
+ super
28
+ end
29
+ end
30
+ else
31
+ def initialize(resource_class, resource_name, params)
27
32
  super
33
+ permit(:invite, keys: (resource_class.respond_to?(:invite_key_fields) ? resource_class.invite_key_fields : []) )
34
+ permit(:accept_invitation, keys: [:password, :password_confirmation, :invitation_token] )
28
35
  end
29
36
  end
30
- else
31
- def initialize(resource_class, resource_name, params)
32
- super
33
- permit(:invite, keys: (resource_class.respond_to?(:invite_key_fields) ? resource_class.invite_key_fields : []) )
34
- permit(:accept_invitation, keys: [:password, :password_confirmation, :invitation_token] )
35
- end
36
- end
37
37
  end
38
38
  end
@@ -2,13 +2,13 @@ module ActionDispatch::Routing
2
2
  class Mapper
3
3
 
4
4
  protected
5
+
5
6
  def devise_invitation(mapping, controllers)
6
- resource :invitation, :only => [:new, :create, :update],
7
- :path => mapping.path_names[:invitation], :controller => controllers[:invitations] do
8
- get :edit, :path => mapping.path_names[:accept], :as => :accept
9
- get :destroy, :path => mapping.path_names[:remove], :as => :remove
7
+ resource :invitation, only: [:new, :create, :update],
8
+ path: mapping.path_names[:invitation], controller: controllers[:invitations] do
9
+ get :edit, path: mapping.path_names[:accept], as: :accept
10
+ get :destroy, path: mapping.path_names[:remove], as: :remove
10
11
  end
11
12
  end
12
-
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseInvitable
2
- VERSION = '1.7.5'
2
+ VERSION = '2.0.5'.freeze
3
3
  end
@@ -3,14 +3,14 @@ require 'rails/generators/active_record'
3
3
  module ActiveRecord
4
4
  module Generators
5
5
  class DeviseInvitableGenerator < ActiveRecord::Generators::Base
6
- source_root File.expand_path("../templates", __FILE__)
6
+ source_root File.expand_path('../templates', __FILE__)
7
7
 
8
8
  def copy_devise_migration
9
- migration_template "migration.rb", "db/migrate/devise_invitable_add_to_#{table_name}.rb", migration_version: migration_version
9
+ migration_template 'migration.rb', "db/migrate/devise_invitable_add_to_#{table_name}.rb", migration_version: migration_version
10
10
  end
11
11
 
12
12
  def migration_version
13
- if Rails.version.start_with? '5.'
13
+ if Rails::VERSION::MAJOR >= 5
14
14
  "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
15
15
  end
16
16
  end
@@ -8,7 +8,6 @@ class DeviseInvitableAddTo<%= table_name.camelize %> < ActiveRecord::Migration<%
8
8
  t.integer :invitation_limit
9
9
  t.references :invited_by, polymorphic: true
10
10
  t.integer :invitations_count, default: 0
11
- t.index :invitations_count
12
11
  t.index :invitation_token, unique: true # for invitable
13
12
  t.index :invited_by_id
14
13
  end
@@ -1,17 +1,13 @@
1
1
  module DeviseInvitable
2
2
  module Generators
3
3
  class DeviseInvitableGenerator < Rails::Generators::NamedBase
4
- namespace "devise_invitable"
4
+ namespace 'devise_invitable'
5
5
 
6
- desc "Add :invitable directive in the given model. Also generate migration for ActiveRecord"
7
-
8
- # def devise_generate_model
9
- # invoke "devise", [name]
10
- # end
6
+ desc 'Add :invitable directive in the given model. Also generate migration for ActiveRecord'
11
7
 
12
8
  def inject_devise_invitable_content
13
- path = File.join("app", "models", "#{file_path}.rb")
14
- inject_into_file(path, "invitable, :", :after => "devise :") if File.exists?(path)
9
+ path = File.join('app', 'models', "#{file_path}.rb")
10
+ inject_into_file(path, 'invitable, :', after: 'devise :') if File.exists?(path)
15
11
  end
16
12
 
17
13
  hook_for :orm
@@ -1,26 +1,22 @@
1
1
  module DeviseInvitable
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- source_root File.expand_path("../../templates", __FILE__)
5
- desc "Add DeviseInvitable config variables to the Devise initializer and copy DeviseInvitable locale files to your application."
6
-
7
- # def devise_install
8
- # invoke "devise:install"
9
- # end
4
+ source_root File.expand_path('../../templates', __FILE__)
5
+ desc 'Add DeviseInvitable config variables to the Devise initializer and copy DeviseInvitable locale files to your application.'
10
6
 
11
7
  def add_config_options_to_initializer
12
- devise_initializer_path = "config/initializers/devise.rb"
8
+ devise_initializer_path = 'config/initializers/devise.rb'
13
9
  if File.exist?(devise_initializer_path)
14
10
  old_content = File.read(devise_initializer_path)
15
11
 
16
12
  if old_content.match(Regexp.new(/^\s# ==> Configuration for :invitable\n/))
17
13
  false
18
14
  else
19
- inject_into_file(devise_initializer_path, :before => " # ==> Configuration for :confirmable\n") do
15
+ inject_into_file(devise_initializer_path, before: " # ==> Configuration for :confirmable\n") do
20
16
  <<-CONTENT
21
17
  # ==> Configuration for :invitable
22
- # The period the generated invitation token is valid, after
23
- # this period, the invited resource won't be able to accept the invitation.
18
+ # The period the generated invitation token is valid.
19
+ # After this period, the invited resource won't be able to accept the invitation.
24
20
  # When invite_for is 0 (the default), the invitation won't expire.
25
21
  # config.invite_for = 2.weeks
26
22
 
@@ -36,10 +32,11 @@ module DeviseInvitable
36
32
 
37
33
  # The key to be used to check existing users when sending an invitation
38
34
  # and the regexp used to test it when validate_on_invite is not set.
39
- # config.invite_key = {:email => /\\A[^@]+@[^@]+\\z/}
40
- # config.invite_key = {:email => /\\A[^@]+@[^@]+\\z/, :username => nil}
35
+ # config.invite_key = { email: /\\A[^@]+@[^@]+\\z/ }
36
+ # config.invite_key = { email: /\\A[^@]+@[^@]+\\z/, username: nil }
41
37
 
42
- # Flag that force a record to be valid before being actually invited
38
+ # Ensure that invited record is valid.
39
+ # The invitation won't be sent if this check fails.
43
40
  # Default: false
44
41
  # config.validate_on_invite = true
45
42
 
@@ -73,7 +70,7 @@ CONTENT
73
70
  end
74
71
 
75
72
  def copy_locale
76
- copy_file "../../../config/locales/en.yml", "config/locales/devise_invitable.en.yml"
73
+ copy_file '../../../config/locales/en.yml', 'config/locales/devise_invitable.en.yml'
77
74
  end
78
75
 
79
76
  end
@@ -1,11 +1,15 @@
1
- <h2><%= t 'devise.invitations.edit.header' %></h2>
1
+ <h2><%= t "devise.invitations.edit.header" %></h2>
2
2
 
3
- <%= simple_form_for resource, as: resource_name, url: invitation_path(resource_name), html: { method: :put } do |f| %>
4
- <%= devise_error_messages! %>
3
+ <%= simple_form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :put }) do |f| %>
4
+ <%= f.error_notification %>
5
5
  <%= f.hidden_field :invitation_token %>
6
6
 
7
- <%= f.input :password %>
8
- <%= f.input :password_confirmation %>
7
+ <div class="form-inputs">
8
+ <%= f.input :password %>
9
+ <%= f.input :password_confirmation %>
10
+ </div>
9
11
 
10
- <%= f.button :submit, t("devise.invitations.edit.submit_button") %>
12
+ <div class="form-actions">
13
+ <%= f.button :submit, t("devise.invitations.edit.submit_button") %>
14
+ </div>
11
15
  <% end %>
@@ -1,11 +1,15 @@
1
1
  <h2><%= t "devise.invitations.new.header" %></h2>
2
2
 
3
- <%= simple_form_for resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post} do |f| %>
4
- <%= devise_error_messages! %>
3
+ <%= simple_form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
4
+ <%= f.error_notification %>
5
5
 
6
- <% resource.class.invite_key_fields.each do |field| -%>
7
- <%= f.input field %>
8
- <% end -%>
6
+ <% resource.class.invite_key_fields.each do |field| -%>
7
+ <div class="form-inputs">
8
+ <%= f.input field %>
9
+ </div>
10
+ <% end -%>
9
11
 
10
- <%= f.button :submit, t("devise.invitations.new.submit_button") %>
12
+ <div class="form-actions">
13
+ <%= f.button :submit, t("devise.invitations.new.submit_button") %>
14
+ </div>
11
15
  <% end %>
@@ -11,17 +11,17 @@ module DeviseInvitable
11
11
  end
12
12
 
13
13
  class SimpleFormForGenerator < InvitationViewsGenerator
14
- source_root File.expand_path("../templates/simple_form_for", __FILE__)
14
+ source_root File.expand_path('../templates/simple_form_for', __FILE__)
15
15
  end
16
16
 
17
17
  class FormForGenerator < InvitationViewsGenerator
18
- source_root File.expand_path("../../../../app/views/devise", __FILE__)
18
+ source_root File.expand_path('../../../../app/views/devise', __FILE__)
19
19
  end
20
20
 
21
21
  class MailerViewsGenerator < Rails::Generators::Base
22
22
  include ::Devise::Generators::ViewPathTemplates
23
- source_root File.expand_path("../../../../app/views/devise", __FILE__)
24
- desc "Copies Devise mail erb views to your application."
23
+ source_root File.expand_path('../../../../app/views/devise', __FILE__)
24
+ desc 'Copies Devise mail erb views to your application.'
25
25
  hide!
26
26
 
27
27
  def copy_views
@@ -31,11 +31,11 @@ module DeviseInvitable
31
31
 
32
32
  class ViewsGenerator < Rails::Generators::Base
33
33
  desc 'Copies all DeviseInvitable views to your application.'
34
- argument :scope, :required => false, :default => nil, :desc => "The scope to copy views to"
34
+ argument :scope, required: false, default: nil, desc: 'The scope to copy views to'
35
35
 
36
36
  invoke MailerViewsGenerator
37
37
 
38
- hook_for :form_builder, :aliases => "-b", :desc => "Form builder to be used", :default => defined?(SimpleForm) ? "simple_form_for" : "form_for"
38
+ hook_for :form_builder, aliases: '-b', desc: 'Form builder to be used', default: defined?(SimpleForm) ? 'simple_form_for' : 'form_for'
39
39
  end
40
40
  end
41
41
  end