devise_invitable 1.7.5 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.

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