token_master 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1166 -0
  3. data/README.md +58 -99
  4. data/dummy/.gitignore +18 -0
  5. data/dummy/Gemfile +30 -0
  6. data/dummy/Rakefile +6 -0
  7. data/dummy/app/assets/config/manifest.js +3 -0
  8. data/dummy/app/assets/images/.keep +0 -0
  9. data/dummy/app/assets/javascripts/application.js +16 -0
  10. data/dummy/app/assets/javascripts/cable.js +13 -0
  11. data/dummy/app/assets/javascripts/channels/.keep +0 -0
  12. data/dummy/app/assets/stylesheets/application.css +15 -0
  13. data/dummy/app/channels/application_cable/channel.rb +4 -0
  14. data/dummy/app/channels/application_cable/connection.rb +4 -0
  15. data/dummy/app/controllers/application_controller.rb +3 -0
  16. data/dummy/app/controllers/concerns/.keep +0 -0
  17. data/dummy/app/helpers/application_helper.rb +2 -0
  18. data/dummy/app/jobs/application_job.rb +2 -0
  19. data/dummy/app/mailers/application_mailer.rb +4 -0
  20. data/dummy/app/models/application_record.rb +3 -0
  21. data/dummy/app/models/concerns/.keep +0 -0
  22. data/dummy/app/models/user.rb +10 -0
  23. data/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/dummy/app/views/layouts/mailer.html.erb +13 -0
  25. data/dummy/app/views/layouts/mailer.text.erb +1 -0
  26. data/dummy/bin/bundle +3 -0
  27. data/dummy/bin/rails +9 -0
  28. data/dummy/bin/rake +9 -0
  29. data/dummy/bin/setup +34 -0
  30. data/dummy/bin/spring +17 -0
  31. data/dummy/bin/update +29 -0
  32. data/dummy/config.ru +5 -0
  33. data/dummy/config/application.rb +15 -0
  34. data/dummy/config/boot.rb +3 -0
  35. data/dummy/config/cable.yml +9 -0
  36. data/dummy/config/database.yml +14 -0
  37. data/dummy/config/environment.rb +6 -0
  38. data/dummy/config/environments/development.rb +54 -0
  39. data/dummy/config/environments/test.rb +42 -0
  40. data/dummy/config/initializers/assets.rb +11 -0
  41. data/dummy/config/initializers/cookies_serializer.rb +5 -0
  42. data/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  43. data/dummy/config/initializers/new_framework_defaults.rb +24 -0
  44. data/dummy/config/initializers/session_store.rb +3 -0
  45. data/dummy/config/initializers/token_master.rb +29 -0
  46. data/dummy/config/initializers/wrap_parameters.rb +14 -0
  47. data/dummy/config/locales/en.yml +23 -0
  48. data/dummy/config/puma.rb +47 -0
  49. data/dummy/config/routes.rb +3 -0
  50. data/dummy/config/secrets.yml +9 -0
  51. data/dummy/config/spring.rb +6 -0
  52. data/dummy/db/migrate/20170505170857_create_users.rb +11 -0
  53. data/dummy/db/migrate/20170505171217_add_confirm_tokenable_to_users.rb +26 -0
  54. data/dummy/db/schema.rb +41 -0
  55. data/dummy/db/seeds.rb +14 -0
  56. data/dummy/spec/factories/users.rb +8 -0
  57. data/dummy/spec/models/user_spec.rb +12 -0
  58. data/dummy/spec/rails_helper.rb +54 -0
  59. data/dummy/spec/spec_helper.rb +85 -0
  60. data/dummy/spec/support/factory_bot.rb +3 -0
  61. data/dummy/spec/support/shoulda_matchers.rb +6 -0
  62. data/lib/token_master/core.rb +14 -0
  63. data/lib/token_master/model.rb +6 -1
  64. data/lib/token_master/version.rb +1 -1
  65. metadata +62 -3
@@ -0,0 +1,47 @@
1
+ # Puma can serve each request in a thread from an internal thread pool.
2
+ # The `threads` method setting takes two numbers a minimum and maximum.
3
+ # Any libraries that use thread pools should be configured to match
4
+ # the maximum value specified for Puma. Default is set to 5 threads for minimum
5
+ # and maximum, this matches the default thread size of Active Record.
6
+ #
7
+ threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
8
+ threads threads_count, threads_count
9
+
10
+ # Specifies the `port` that Puma will listen on to receive requests, default is 3000.
11
+ #
12
+ port ENV.fetch("PORT") { 3000 }
13
+
14
+ # Specifies the `environment` that Puma will run in.
15
+ #
16
+ environment ENV.fetch("RAILS_ENV") { "development" }
17
+
18
+ # Specifies the number of `workers` to boot in clustered mode.
19
+ # Workers are forked webserver processes. If using threads and workers together
20
+ # the concurrency of the application would be max `threads` * `workers`.
21
+ # Workers do not work on JRuby or Windows (both of which do not support
22
+ # processes).
23
+ #
24
+ # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
25
+
26
+ # Use the `preload_app!` method when specifying a `workers` number.
27
+ # This directive tells Puma to first boot the application and load code
28
+ # before forking the application. This takes advantage of Copy On Write
29
+ # process behavior so workers use less memory. If you use this option
30
+ # you need to make sure to reconnect any threads in the `on_worker_boot`
31
+ # block.
32
+ #
33
+ # preload_app!
34
+
35
+ # The code in the `on_worker_boot` will be called if you are using
36
+ # clustered mode by specifying a number of `workers`. After each worker
37
+ # process is booted this block will be run, if you are using `preload_app!`
38
+ # option you will want to use this block to reconnect to any threads
39
+ # or connections that may have been created at application boot, Ruby
40
+ # cannot share connections between processes.
41
+ #
42
+ # on_worker_boot do
43
+ # ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
44
+ # end
45
+
46
+ # Allow puma to be restarted by `rails restart` command.
47
+ plugin :tmp_restart
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
3
+ end
@@ -0,0 +1,9 @@
1
+
2
+ development:
3
+ secret_key_base: 62d2af1b89d9201a6703a7a7bc291769aba42f4402daef34a2bb589dbd8ea88ed00e30c7f694e1512f9e7c331022bfd90f4574172642eca7f6d5daabb14c5042
4
+
5
+ test:
6
+ secret_key_base: 3e0200862ceb79910a614e3691d733a1971d061d13949db0273794708146c6073032ec3f6ccfc0c902f04efe2c9c0960fbea2226cf3c7f4acb08d91576f11bdb
7
+
8
+ production:
9
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -0,0 +1,6 @@
1
+ %w(
2
+ .ruby-version
3
+ .rbenv-vars
4
+ tmp/restart.txt
5
+ tmp/caching-dev.txt
6
+ ).each { |path| Spring.watch(path) }
@@ -0,0 +1,11 @@
1
+ class CreateUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :users do |t|
4
+ t.string :name
5
+ t.string :email
6
+ t.string :password_digest
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ class AddConfirmTokenableToUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+
4
+ add_column :users, :confirm_token, :string, default: nil
5
+ add_column :users, :confirm_created_at, :timestamp, default: nil
6
+ add_column :users, :confirm_sent_at, :timestamp, default: nil
7
+ add_column :users, :confirm_completed_at, :timestamp, default: nil
8
+
9
+ add_index :users, :confirm_token
10
+
11
+ add_column :users, :reset_token, :string, default: nil
12
+ add_column :users, :reset_created_at, :timestamp, default: nil
13
+ add_column :users, :reset_sent_at, :timestamp, default: nil
14
+ add_column :users, :reset_completed_at, :timestamp, default: nil
15
+
16
+ add_index :users, :reset_token
17
+
18
+ add_column :users, :invite_token, :string, default: nil
19
+ add_column :users, :invite_created_at, :timestamp, default: nil
20
+ add_column :users, :invite_sent_at, :timestamp, default: nil
21
+ add_column :users, :invite_completed_at, :timestamp, default: nil
22
+
23
+ add_index :users, :invite_token
24
+
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ # This file is auto-generated from the current state of the database. Instead
2
+ # of editing this file, please use the migrations feature of Active Record to
3
+ # incrementally modify your database, and then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your
6
+ # database schema. If you need to create the application database on another
7
+ # system, you should be using db:schema:load, not running all the migrations
8
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
10
+ #
11
+ # It's strongly recommended that you check this file into your version control system.
12
+
13
+ ActiveRecord::Schema.define(version: 20170505171217) do
14
+
15
+ # These are extensions that must be enabled in order to support this database
16
+ enable_extension "plpgsql"
17
+
18
+ create_table "users", force: :cascade do |t|
19
+ t.string "name"
20
+ t.string "email"
21
+ t.string "password_digest"
22
+ t.datetime "created_at", null: false
23
+ t.datetime "updated_at", null: false
24
+ t.string "confirm_token"
25
+ t.datetime "confirm_created_at"
26
+ t.datetime "confirm_sent_at"
27
+ t.datetime "confirm_completed_at"
28
+ t.string "reset_token"
29
+ t.datetime "reset_created_at"
30
+ t.datetime "reset_sent_at"
31
+ t.datetime "reset_completed_at"
32
+ t.string "invite_token"
33
+ t.datetime "invite_created_at"
34
+ t.datetime "invite_sent_at"
35
+ t.datetime "invite_completed_at"
36
+ t.index ["confirm_token"], name: "index_users_on_confirm_token", using: :btree
37
+ t.index ["invite_token"], name: "index_users_on_invite_token", using: :btree
38
+ t.index ["reset_token"], name: "index_users_on_reset_token", using: :btree
39
+ end
40
+
41
+ end
@@ -0,0 +1,14 @@
1
+ ## CREATE USERS
2
+ puts 'creating users...'
3
+ num_users = 10
4
+ users = []
5
+ num_users.times do
6
+ users << {
7
+ name: Faker::Name.name,
8
+ email: Faker::Internet.email,
9
+ password: 'password',
10
+ password_confirmation: 'password'
11
+ }
12
+ end
13
+ User.create!(users)
14
+ puts "#{num_users} users created"
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :user do
3
+ sequence(:email) { |n| "user_#{n}@example.com"}
4
+ password 'password'
5
+ password_confirmation 'password'
6
+ name { Faker::Name.name }
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe User, :type => :model do
4
+ subject { build(:user) }
5
+
6
+ it { is_expected.to be_valid }
7
+
8
+ it { is_expected.to validate_presence_of :name }
9
+ it { is_expected.to validate_presence_of :email }
10
+
11
+ it { expect(subject.send_email).to eq('sent an email') }
12
+ end
@@ -0,0 +1,54 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ require 'spec_helper'
3
+ require File.expand_path("../../config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'shoulda/matchers'
6
+ # Add additional requires below this line. Rails is not loaded until this point!
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc, in
9
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
10
+ # run as spec files by default. This means that files in spec/support that end
11
+ # in _spec.rb will both be required and run as specs, causing the specs to be
12
+ # run twice. It is recommended that you do not name files matching this glob to
13
+ # end with _spec.rb. You can configure this pattern with the --pattern
14
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
15
+ #
16
+ # The following line is provided for convenience purposes. It has the downside
17
+ # of increasing the boot-up time by auto-requiring all files in the support
18
+ # directory. Alternatively, in the individual `*_spec.rb` files, manually
19
+ # require only the support files necessary.
20
+ #
21
+ Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
22
+
23
+ # Checks for pending migrations before tests are run.
24
+ # If you are not using ActiveRecord, you can remove this line.
25
+ ActiveRecord::Migration.maintain_test_schema!
26
+
27
+ RSpec.configure do |config|
28
+ config.include FactoryBot::Syntax::Methods
29
+ config.include Shoulda::Matchers
30
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
31
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
32
+
33
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
34
+ # examples within a transaction, remove the following line or assign false
35
+ # instead of true.
36
+ config.use_transactional_fixtures = true
37
+
38
+ # RSpec Rails can automatically mix in different behaviours to your tests
39
+ # based on their file location, for example enabling you to call `get` and
40
+ # `post` in specs under `spec/controllers`.
41
+ #
42
+ # You can disable this behaviour by removing the line below, and instead
43
+ # explicitly tag your specs with their type, e.g.:
44
+ #
45
+ # RSpec.describe UsersController, :type => :controller do
46
+ # # ...
47
+ # end
48
+ #
49
+ # The different available types are documented in the features, such as in
50
+ # https://relishapp.com/rspec/rspec-rails/docs
51
+ config.infer_spec_type_from_file_location!
52
+ end
53
+
54
+ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
@@ -0,0 +1,85 @@
1
+ # This file was generated by the `rails generate rspec:install` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, consider making
10
+ # a separate helper file that requires the additional dependencies and performs
11
+ # the additional setup, and require it from the spec files that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ RSpec.configure do |config|
18
+ # rspec-expectations config goes here. You can use an alternate
19
+ # assertion/expectation library such as wrong or the stdlib/minitest
20
+ # assertions if you prefer.
21
+ config.expect_with :rspec do |expectations|
22
+ # This option will default to `true` in RSpec 4. It makes the `description`
23
+ # and `failure_message` of custom matchers include text for helper methods
24
+ # defined using `chain`, e.g.:
25
+ # be_bigger_than(2).and_smaller_than(4).description
26
+ # # => "be bigger than 2 and smaller than 4"
27
+ # ...rather than:
28
+ # # => "be bigger than 2"
29
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
30
+ end
31
+
32
+ # rspec-mocks config goes here. You can use an alternate test double
33
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
34
+ config.mock_with :rspec do |mocks|
35
+ # Prevents you from mocking or stubbing a method that does not exist on
36
+ # a real object. This is generally recommended, and will default to
37
+ # `true` in RSpec 4.
38
+ mocks.verify_partial_doubles = true
39
+ end
40
+
41
+ # The settings below are suggested to provide a good initial experience
42
+ # with RSpec, but feel free to customize to your heart's content.
43
+ =begin
44
+ # These two settings work together to allow you to limit a spec run
45
+ # to individual examples or groups you care about by tagging them with
46
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
47
+ # get run.
48
+ config.filter_run :focus
49
+ config.run_all_when_everything_filtered = true
50
+
51
+ # Limits the available syntax to the non-monkey patched syntax that is recommended.
52
+ # For more details, see:
53
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
54
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
55
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
56
+ config.disable_monkey_patching!
57
+
58
+ # Many RSpec users commonly either run the entire suite or an individual
59
+ # file, and it's useful to allow more verbose output when running an
60
+ # individual spec file.
61
+ if config.files_to_run.one?
62
+ # Use the documentation formatter for detailed output,
63
+ # unless a formatter has already been configured
64
+ # (e.g. via a command-line flag).
65
+ config.default_formatter = 'doc'
66
+ end
67
+
68
+ # Print the 10 slowest examples and example groups at the
69
+ # end of the spec run, to help surface which specs are running
70
+ # particularly slow.
71
+ config.profile_examples = 10
72
+
73
+ # Run specs in random order to surface order dependencies. If you find an
74
+ # order dependency and want to debug it, you can fix the order by providing
75
+ # the seed, which is printed after each run.
76
+ # --seed 1234
77
+ config.order = :random
78
+
79
+ # Seed global randomization in this process using the `--seed` CLI option.
80
+ # Setting this allows you to use `--seed` to deterministically reproduce
81
+ # test failures related to randomization by passing the same `--seed` value
82
+ # as the one that triggered the failure.
83
+ Kernel.srand config.seed
84
+ =end
85
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryBot::Syntax::Methods
3
+ end
@@ -0,0 +1,6 @@
1
+ Shoulda::Matchers.configure do |config|
2
+ config.integrate do |with|
3
+ with.test_framework :rspec
4
+ with.library :rails
5
+ end
6
+ end
@@ -92,6 +92,20 @@ module TokenMaster
92
92
  model.save(validate: false)
93
93
  end
94
94
 
95
+ # Calls set_token! and send_instructions! to generate a new token and send instructions again (accepts a block, such as a mailer method, for sending instructions).<br />Note, any previously generated token for the user will be invalid.
96
+ # @example Resend Reset Instructions
97
+ # user.resend_reset_instruction! { user.send_email } =>
98
+ # <User id: 205, name: "John Smith", email: "jsmith@example.com", reset_token: "4ZcHkSJ8kXrV4wl", reset_created_at: 2017-04-25 16:21:54", reset_sent_at: "2017-04-25 16:22:42", reset_completed_at: nil>
99
+ # @param [Object] model the tokenable model instance
100
+ # @param [String, Symbol] key the tokenable action
101
+ # @param [Integer] token_length the length of the generated token, method will use configuration token_length if not provided otherwise
102
+ # @raise [NotTokenableError] if the provided Class does not have the correct tokenable column
103
+ # @return [Object] tokenable model instance
104
+ def resend_instructions!(model, key, token_length = nil)
105
+ set_token!(model, key, token_length)
106
+ send_instructions!(model, key)
107
+ end
108
+
95
109
  # Provides the status of the tokenable action, whether the action has been completed, the token has been sent, the token is expired, or the token has only been created
96
110
  # @param [Object] model the tokenable model instance
97
111
  # @param [String, Symbol] key the tokenable action
@@ -24,6 +24,11 @@ module TokenMaster
24
24
  TokenMaster::Core.send_instructions!(self, tokenable, &email)
25
25
  end
26
26
 
27
+ # Defines a method on the tokenable model instance to generate a new token and send tokenable action instructions again, e.g., `user.resend_confim_instructions!`. Accepts a block with app logic to send instructions.
28
+ define_method("resend_#{tokenable}_instructions!") do |&email|
29
+ TokenMaster::Core.resend_instructions!(self, tokenable, &email)
30
+ end
31
+
27
32
  # Defines a method on the tokenable model instance to retrieve the status of a tokenable action, e.g., `user.confim_status`
28
33
  define_method("#{tokenable}_status") do
29
34
  TokenMaster::Core.status(self, tokenable)
@@ -35,7 +40,7 @@ module TokenMaster
35
40
  end
36
41
  # class methods
37
42
 
38
- # Defines a method on the tokenable model class to completed a tokenable action given a token, e.g., `User.confim_by_token!`. Takes the token and accepts any keyword arguments for `required_params`.
43
+ # Defines a method on the tokenable model class to complete a tokenable action given a token, e.g., `User.confim_by_token!`. Takes the token and accepts any keyword arguments for `required_params`.
39
44
  define_singleton_method("#{tokenable}_by_token!") do |token, **params|
40
45
  TokenMaster::Core.do_by_token!(self, tokenable, token, **params)
41
46
  end
@@ -1,4 +1,4 @@
1
1
  module TokenMaster
2
2
  # Current version of TokenMaster
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.1.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: token_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Corwin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-31 00:00:00.000000000 Z
12
+ date: 2017-12-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
63
  - ".inch.yml"
64
+ - ".rubocop.yml"
64
65
  - ".ruby-version"
65
66
  - ".travis.yml"
66
67
  - ".yardopts"
@@ -70,6 +71,64 @@ files:
70
71
  - Rakefile
71
72
  - badge.png
72
73
  - badge.svg
74
+ - dummy/.gitignore
75
+ - dummy/Gemfile
76
+ - dummy/Rakefile
77
+ - dummy/app/assets/config/manifest.js
78
+ - dummy/app/assets/images/.keep
79
+ - dummy/app/assets/javascripts/application.js
80
+ - dummy/app/assets/javascripts/cable.js
81
+ - dummy/app/assets/javascripts/channels/.keep
82
+ - dummy/app/assets/stylesheets/application.css
83
+ - dummy/app/channels/application_cable/channel.rb
84
+ - dummy/app/channels/application_cable/connection.rb
85
+ - dummy/app/controllers/application_controller.rb
86
+ - dummy/app/controllers/concerns/.keep
87
+ - dummy/app/helpers/application_helper.rb
88
+ - dummy/app/jobs/application_job.rb
89
+ - dummy/app/mailers/application_mailer.rb
90
+ - dummy/app/models/application_record.rb
91
+ - dummy/app/models/concerns/.keep
92
+ - dummy/app/models/user.rb
93
+ - dummy/app/views/layouts/application.html.erb
94
+ - dummy/app/views/layouts/mailer.html.erb
95
+ - dummy/app/views/layouts/mailer.text.erb
96
+ - dummy/bin/bundle
97
+ - dummy/bin/rails
98
+ - dummy/bin/rake
99
+ - dummy/bin/setup
100
+ - dummy/bin/spring
101
+ - dummy/bin/update
102
+ - dummy/config.ru
103
+ - dummy/config/application.rb
104
+ - dummy/config/boot.rb
105
+ - dummy/config/cable.yml
106
+ - dummy/config/database.yml
107
+ - dummy/config/environment.rb
108
+ - dummy/config/environments/development.rb
109
+ - dummy/config/environments/test.rb
110
+ - dummy/config/initializers/assets.rb
111
+ - dummy/config/initializers/cookies_serializer.rb
112
+ - dummy/config/initializers/filter_parameter_logging.rb
113
+ - dummy/config/initializers/new_framework_defaults.rb
114
+ - dummy/config/initializers/session_store.rb
115
+ - dummy/config/initializers/token_master.rb
116
+ - dummy/config/initializers/wrap_parameters.rb
117
+ - dummy/config/locales/en.yml
118
+ - dummy/config/puma.rb
119
+ - dummy/config/routes.rb
120
+ - dummy/config/secrets.yml
121
+ - dummy/config/spring.rb
122
+ - dummy/db/migrate/20170505170857_create_users.rb
123
+ - dummy/db/migrate/20170505171217_add_confirm_tokenable_to_users.rb
124
+ - dummy/db/schema.rb
125
+ - dummy/db/seeds.rb
126
+ - dummy/spec/factories/users.rb
127
+ - dummy/spec/models/user_spec.rb
128
+ - dummy/spec/rails_helper.rb
129
+ - dummy/spec/spec_helper.rb
130
+ - dummy/spec/support/factory_bot.rb
131
+ - dummy/spec/support/shoulda_matchers.rb
73
132
  - lib/generators/rails/templates/migration.rb.erb
74
133
  - lib/generators/rails/token_master_generator.rb
75
134
  - lib/generators/token_master/install_generator.rb
@@ -103,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
162
  version: '0'
104
163
  requirements: []
105
164
  rubyforge_project:
106
- rubygems_version: 2.6.13
165
+ rubygems_version: 2.5.1
107
166
  signing_key:
108
167
  specification_version: 4
109
168
  summary: Token Master!