activerecord-userstamp 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +16 -0
  5. data/CHANGELOG +26 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +21 -0
  8. data/README.md +220 -0
  9. data/Rakefile +17 -0
  10. data/activerecord-userstamp.gemspec +34 -0
  11. data/lib/active_record/userstamp.rb +14 -0
  12. data/lib/active_record/userstamp/controller_additions.rb +41 -0
  13. data/lib/active_record/userstamp/migration_additions.rb +16 -0
  14. data/lib/active_record/userstamp/model_additions.rb +3 -0
  15. data/lib/active_record/userstamp/stampable.rb +174 -0
  16. data/lib/active_record/userstamp/stamper.rb +39 -0
  17. data/lib/active_record/userstamp/version.rb +4 -0
  18. data/lib/activerecord/userstamp.rb +1 -0
  19. data/spec/controllers/posts_controller_spec.rb +46 -0
  20. data/spec/controllers/users_controller_spec.rb +41 -0
  21. data/spec/coverage_helper.rb +65 -0
  22. data/spec/dummy/README.rdoc +28 -0
  23. data/spec/dummy/Rakefile +6 -0
  24. data/spec/dummy/app/assets/images/.keep +0 -0
  25. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  26. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  27. data/spec/dummy/app/controllers/application_controller.rb +13 -0
  28. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  29. data/spec/dummy/app/controllers/posts_controller.rb +32 -0
  30. data/spec/dummy/app/controllers/users_controller.rb +18 -0
  31. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  32. data/spec/dummy/app/mailers/.keep +0 -0
  33. data/spec/dummy/app/models/comment.rb +6 -0
  34. data/spec/dummy/app/models/concerns/.keep +0 -0
  35. data/spec/dummy/app/models/foo.rb +3 -0
  36. data/spec/dummy/app/models/person.rb +4 -0
  37. data/spec/dummy/app/models/post.rb +13 -0
  38. data/spec/dummy/app/models/user.rb +4 -0
  39. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  40. data/spec/dummy/bin/bundle +3 -0
  41. data/spec/dummy/bin/rails +4 -0
  42. data/spec/dummy/bin/rake +4 -0
  43. data/spec/dummy/bin/setup +29 -0
  44. data/spec/dummy/config.ru +4 -0
  45. data/spec/dummy/config/application.rb +30 -0
  46. data/spec/dummy/config/boot.rb +5 -0
  47. data/spec/dummy/config/database.yml +25 -0
  48. data/spec/dummy/config/environment.rb +5 -0
  49. data/spec/dummy/config/environments/development.rb +41 -0
  50. data/spec/dummy/config/environments/production.rb +79 -0
  51. data/spec/dummy/config/environments/test.rb +37 -0
  52. data/spec/dummy/config/initializers/assets.rb +11 -0
  53. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  54. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  55. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  56. data/spec/dummy/config/initializers/inflections.rb +16 -0
  57. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  58. data/spec/dummy/config/initializers/session_store.rb +3 -0
  59. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  60. data/spec/dummy/config/locales/en.yml +23 -0
  61. data/spec/dummy/config/routes.rb +56 -0
  62. data/spec/dummy/config/secrets.yml +22 -0
  63. data/spec/dummy/db/schema.rb +55 -0
  64. data/spec/dummy/lib/assets/.keep +0 -0
  65. data/spec/dummy/log/.keep +0 -0
  66. data/spec/dummy/public/404.html +67 -0
  67. data/spec/dummy/public/422.html +67 -0
  68. data/spec/dummy/public/500.html +66 -0
  69. data/spec/dummy/public/favicon.ico +0 -0
  70. data/spec/lib/compatibility_stamping_spec.rb +69 -0
  71. data/spec/lib/migration_spec.rb +26 -0
  72. data/spec/lib/stamping_spec.rb +170 -0
  73. data/spec/lib/userstamp_spec.rb +7 -0
  74. data/spec/rails_helper.rb +7 -0
  75. data/spec/spec_helper.rb +97 -0
  76. data/spec/support/database_helpers.rb +22 -0
  77. data/spec/support/with_temporary_table.rb +50 -0
  78. metadata +276 -0
@@ -0,0 +1,26 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Migration helpers', type: :model do
4
+ class self::Random < ActiveRecord::Base
5
+ stampable
6
+ end
7
+ subject { self.class::Random.new }
8
+
9
+ temporary_table(:randoms) do |t|
10
+ t.userstamps
11
+ end
12
+
13
+ with_temporary_table(:randoms) do
14
+ it 'has a creator_id association' do
15
+ expect(subject.has_attribute?(:creator_id)).to be true
16
+ end
17
+
18
+ it 'has an updater_id association' do
19
+ expect(subject.has_attribute?(:updater_id)).to be true
20
+ end
21
+
22
+ it 'has a deleter_id association' do
23
+ expect(subject.has_attribute?(:deleter_id)).to be false
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,170 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Stamping', type: :model do
4
+ before(:each) do
5
+ reset_to_defaults
6
+ User.stamper = @zeus
7
+ Person.stamper = @delynn
8
+ end
9
+
10
+ context 'when creating a Person' do
11
+ context 'when the stamper is an object' do
12
+ it 'sets the correct creator and updater' do
13
+ expect(User.stamper).to eq(@zeus.id)
14
+
15
+ person = Person.create(:name => "David")
16
+ expect(person.creator_id).to eq(@zeus.id)
17
+ expect(person.updater_id).to eq(@zeus.id)
18
+ expect(person.creator).to eq(@zeus)
19
+ expect(person.updater).to eq(@zeus)
20
+ end
21
+ end
22
+
23
+ context 'when the stamper is an ID' do
24
+ it 'sets the correct creator and updater' do
25
+ User.stamper = @hera.id
26
+ expect(User.stamper).to eq(@hera.id)
27
+
28
+ person = Person.create(:name => "Daniel")
29
+ expect(person.creator_id).to eq(@hera.id)
30
+ expect(person.updater_id).to eq(@hera.id)
31
+ expect(person.creator).to eq(@hera)
32
+ expect(person.updater).to eq(@hera)
33
+ end
34
+ end
35
+ end
36
+
37
+ context 'when creating a Post' do
38
+ context 'when the stamper is an object' do
39
+ it 'sets the correct creator and updater' do
40
+ expect(Person.stamper).to eq(@delynn.id)
41
+
42
+ post = Post.create(:title => "Test Post - 1")
43
+ expect(post.creator_id).to eq(@delynn.id)
44
+ expect(post.updater_id).to eq(@delynn.id)
45
+ expect(post.creator).to eq(@delynn)
46
+ expect(post.updater).to eq(@delynn)
47
+ end
48
+ end
49
+
50
+ context 'when the stamper is an ID' do
51
+ it 'sets the correct creator and updater' do
52
+ Person.stamper = @nicole.id
53
+ expect(Person.stamper).to eq(@nicole.id)
54
+
55
+ post = Post.create(:title => "Test Post - 2")
56
+ expect(post.creator_id).to eq(@nicole.id)
57
+ expect(post.updater_id).to eq(@nicole.id)
58
+ expect(post.creator).to eq(@nicole)
59
+ expect(post.updater).to eq(@nicole)
60
+ end
61
+ end
62
+ end
63
+
64
+ context 'when updating a Person' do
65
+ context 'when the stamper is an object' do
66
+ it 'sets the correct updater' do
67
+ User.stamper = @hera
68
+ expect(User.stamper).to eq(@hera.id)
69
+
70
+ @delynn.name << " Berry"
71
+ @delynn.save
72
+ @delynn.reload
73
+ expect(@delynn.creator).to eq(@zeus)
74
+ expect(@delynn.updater).to eq(@hera)
75
+ expect(@delynn.creator_id).to eq(@zeus.id)
76
+ expect(@delynn.updater_id).to eq(@hera.id)
77
+ end
78
+ end
79
+ end
80
+
81
+ context 'when the stamper is an ID' do
82
+ it 'sets the correct updater' do
83
+ User.stamper = @hera.id
84
+ expect(User.stamper).to eq(@hera.id)
85
+
86
+ @delynn.name << " Berry"
87
+ @delynn.save
88
+ @delynn.reload
89
+ expect(@delynn.creator_id).to eq(@zeus.id)
90
+ expect(@delynn.updater_id).to eq(@hera.id)
91
+ expect(@delynn.creator).to eq(@zeus)
92
+ expect(@delynn.updater).to eq(@hera)
93
+ end
94
+ end
95
+
96
+ context 'when updating a Post' do
97
+ context 'when the stamper is an ID' do
98
+ it 'sets the correct updater' do
99
+ Person.stamper = @nicole.id
100
+ expect(Person.stamper).to eq(@nicole.id)
101
+
102
+ @first_post.title << " - Updated"
103
+ @first_post.save
104
+ @first_post.reload
105
+ expect(@first_post.creator_id).to eq(@delynn.id)
106
+ expect(@first_post.updater_id).to eq(@nicole.id)
107
+ expect(@first_post.creator).to eq(@delynn)
108
+ expect(@first_post.updater).to eq(@nicole)
109
+ end
110
+ end
111
+
112
+ context 'when the stamper is an object' do
113
+ it 'sets the correct updater' do
114
+ Person.stamper = @nicole
115
+ expect(Person.stamper).to eq(@nicole.id)
116
+
117
+ @first_post.title << " - Updated"
118
+ @first_post.save
119
+ @first_post.reload
120
+ expect(@first_post.creator_id).to eq(@delynn.id)
121
+ expect(@first_post.updater_id).to eq(@nicole.id)
122
+ expect(@first_post.creator).to eq(@delynn)
123
+ expect(@first_post.updater).to eq(@nicole)
124
+ end
125
+ end
126
+ end
127
+
128
+ context 'when destroying a Post' do
129
+ context 'when the stamper is an ID' do
130
+ it 'sets the deleter' do
131
+ expect(@first_post.deleted_at).to be_nil
132
+
133
+ Person.stamper = @nicole.id
134
+ expect(Person.stamper).to eq(@nicole.id)
135
+
136
+ @first_post.destroy
137
+ @first_post.save
138
+ @first_post.reload
139
+
140
+ expect(@first_post.deleted_at).to be_present
141
+ expect(@first_post.deleter_id).to eq(@nicole.id)
142
+ end
143
+ end
144
+ end
145
+
146
+ context 'when no deleter column is present' do
147
+ it 'does not create a deleter relation' do
148
+ expect(@delynn.respond_to?('creator')).to eq(true)
149
+ expect(@delynn.respond_to?('updater')).to eq(true)
150
+ expect(@delynn.respond_to?('deleter')).to eq(false)
151
+ end
152
+ end
153
+
154
+ context 'when a deleter column is present' do
155
+ it 'creates a deleter relation' do
156
+ expect(@first_post.respond_to?('creator')).to eq(true)
157
+ expect(@first_post.respond_to?('updater')).to eq(true)
158
+ expect(@first_post.respond_to?('deleter')).to eq(true)
159
+ end
160
+ end
161
+
162
+ context 'when the deleter attribute is explicitly set' do
163
+ it 'creates a deleter relation' do
164
+ @foo = Foo.create
165
+ expect(@foo.respond_to?('creator')).to eq(true)
166
+ expect(@foo.respond_to?('updater')).to eq(true)
167
+ expect(@foo.respond_to?('deleter')).to eq(true)
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ActiveRecord::Userstamp do
4
+ it 'has a VERSION' do
5
+ expect(ActiveRecord::Userstamp::VERSION).to match(/^\d+\.\d+\.\d+$/)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'spec_helper'
3
+
4
+ require File.expand_path('dummy/config/environment.rb', __dir__)
5
+ require 'rspec/rails'
6
+
7
+ Dir[__dir__ + '/support/**/*'].each { |f| require f if File.file?(f) }
@@ -0,0 +1,97 @@
1
+ # This file was generated by the `rspec --init` 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
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ require 'bundler/setup'
20
+ Bundler.setup
21
+
22
+ require 'coverage_helper'
23
+
24
+ RSpec.configure do |config|
25
+ # rspec-expectations config goes here. You can use an alternate
26
+ # assertion/expectation library such as wrong or the stdlib/minitest
27
+ # assertions if you prefer.
28
+ config.expect_with :rspec do |expectations|
29
+ # This option will default to `true` in RSpec 4. It makes the `description`
30
+ # and `failure_message` of custom matchers include text for helper methods
31
+ # defined using `chain`, e.g.:
32
+ # be_bigger_than(2).and_smaller_than(4).description
33
+ # # => "be bigger than 2 and smaller than 4"
34
+ # ...rather than:
35
+ # # => "be bigger than 2"
36
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
37
+ end
38
+
39
+ # rspec-mocks config goes here. You can use an alternate test double
40
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
41
+ config.mock_with :rspec do |mocks|
42
+ # Prevents you from mocking or stubbing a method that does not exist on
43
+ # a real object. This is generally recommended, and will default to
44
+ # `true` in RSpec 4.
45
+ mocks.verify_partial_doubles = true
46
+ end
47
+
48
+ # These two settings work together to allow you to limit a spec run
49
+ # to individual examples or groups you care about by tagging them with
50
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
51
+ # get run.
52
+ config.filter_run :focus
53
+ config.run_all_when_everything_filtered = true
54
+
55
+ # Allows RSpec to persist some state between runs in order to support
56
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
57
+ # you configure your source control system to ignore this file.
58
+ config.example_status_persistence_file_path = "spec/examples.txt"
59
+
60
+ # Limits the available syntax to the non-monkey patched syntax that is
61
+ # recommended. For more details, see:
62
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
63
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
64
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
65
+ config.disable_monkey_patching!
66
+
67
+ # This setting enables warnings. It's recommended, but in some cases may
68
+ # be too noisy due to issues in dependencies.
69
+ config.warnings = true
70
+
71
+ # Many RSpec users commonly either run the entire suite or an individual
72
+ # file, and it's useful to allow more verbose output when running an
73
+ # individual spec file.
74
+ if config.files_to_run.one?
75
+ # Use the documentation formatter for detailed output,
76
+ # unless a formatter has already been configured
77
+ # (e.g. via a command-line flag).
78
+ config.default_formatter = 'doc'
79
+ end
80
+
81
+ # Print the 10 slowest examples and example groups at the
82
+ # end of the spec run, to help surface which specs are running
83
+ # particularly slow.
84
+ config.profile_examples = 10
85
+
86
+ # Run specs in random order to surface order dependencies. If you find an
87
+ # order dependency and want to debug it, you can fix the order by providing
88
+ # the seed, which is printed after each run.
89
+ # --seed 1234
90
+ config.order = :random
91
+
92
+ # Seed global randomization in this process using the `--seed` CLI option.
93
+ # Setting this allows you to use `--seed` to deterministically reproduce
94
+ # test failures related to randomization by passing the same `--seed` value
95
+ # as the one that triggered the failure.
96
+ Kernel.srand config.seed
97
+ end
@@ -0,0 +1,22 @@
1
+ def reset_to_defaults
2
+ ActiveRecord::Userstamp.compatibility_mode = false
3
+ create_test_models
4
+ end
5
+
6
+ def create_test_models
7
+ User.delete_all
8
+ Person.delete_all
9
+ Post.delete_all
10
+ Comment.delete_all
11
+ Foo.delete_all
12
+
13
+ @zeus = User.create!(:name => 'Zeus')
14
+ @hera = User.create!(:name => 'Hera')
15
+ User.stamper = @zeus.id
16
+
17
+ @delynn = Person.create!(:name => 'Delynn')
18
+ @nicole = Person.create!(:name => 'Nicole')
19
+ Person.stamper = @delynn.id
20
+
21
+ @first_post = Post.create!(:title => 'a title')
22
+ end
@@ -0,0 +1,50 @@
1
+ # Test group helpers for creating tables.
2
+ # The latest version can be gound at https://gist.github.com/lowjoel/bda0d44b48aac2925079
3
+ module ActiveRecord::TemporaryTable; end
4
+ module ActiveRecord::TemporaryTable::TestGroupHelpers
5
+ # Defines a temporary table that is instantiated when needed, within a `with_temporary_table`
6
+ # block.
7
+ #
8
+ # @param [Symbol] table_name The name of the table to define.
9
+ # @param [Proc] proc The table definition, same as that of a block given to
10
+ # +ActiveRecord::Migration::create_table+
11
+ def temporary_table(table_name, &proc)
12
+ define_method(table_name) do
13
+ proc
14
+ end
15
+ end
16
+
17
+ # Using the temporary table defined previously, run the examples in this group.
18
+ #
19
+ # @param [Symbol] table_name The name of the table to use.
20
+ # @param [Proc] proc The examples requiring the use of the temporary table.
21
+ def with_temporary_table(table_name, &proc)
22
+ context "with temporary table #{table_name}" do |*params|
23
+ before(:context) do
24
+ ActiveRecord::TemporaryTable::TestGroupHelpers.before_context(table_name, send(table_name))
25
+ end
26
+
27
+ after(:context) do
28
+ ActiveRecord::TemporaryTable::TestGroupHelpers.after_context(table_name)
29
+ end
30
+
31
+ module_exec(*params, &proc)
32
+ end
33
+ end
34
+
35
+ def self.before_context(table_name, table_definition)
36
+ ActiveRecord::Migration.suppress_messages do
37
+ ActiveRecord::Migration.create_table(table_name, &table_definition)
38
+ end
39
+ end
40
+
41
+ def self.after_context(table_name)
42
+ ActiveRecord::Migration.suppress_messages do
43
+ ActiveRecord::Migration.drop_table(table_name)
44
+ end
45
+ end
46
+ end
47
+
48
+ RSpec.configure do |config|
49
+ config.extend ActiveRecord::TemporaryTable::TestGroupHelpers, type: :model
50
+ end
metadata ADDED
@@ -0,0 +1,276 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activerecord-userstamp
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Joel Low
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: actionview
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: tzinfo-data
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rdoc
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: codeclimate-test-reporter
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: sqlite3
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: This gem extends ActiveRecord::Base to add automatic updating of created_by
168
+ and updated_by attributes of your models in much the same way that the ActiveRecord::Timestamp
169
+ module updates created_(at/on) and updated_(at/on) attributes.
170
+ email:
171
+ - joel@joelsplace.sg
172
+ executables: []
173
+ extensions: []
174
+ extra_rdoc_files: []
175
+ files:
176
+ - ".gitignore"
177
+ - ".rspec"
178
+ - ".travis.yml"
179
+ - CHANGELOG
180
+ - Gemfile
181
+ - LICENSE
182
+ - README.md
183
+ - Rakefile
184
+ - activerecord-userstamp.gemspec
185
+ - lib/active_record/userstamp.rb
186
+ - lib/active_record/userstamp/controller_additions.rb
187
+ - lib/active_record/userstamp/migration_additions.rb
188
+ - lib/active_record/userstamp/model_additions.rb
189
+ - lib/active_record/userstamp/stampable.rb
190
+ - lib/active_record/userstamp/stamper.rb
191
+ - lib/active_record/userstamp/version.rb
192
+ - lib/activerecord/userstamp.rb
193
+ - spec/controllers/posts_controller_spec.rb
194
+ - spec/controllers/users_controller_spec.rb
195
+ - spec/coverage_helper.rb
196
+ - spec/dummy/README.rdoc
197
+ - spec/dummy/Rakefile
198
+ - spec/dummy/app/assets/images/.keep
199
+ - spec/dummy/app/assets/javascripts/application.js
200
+ - spec/dummy/app/assets/stylesheets/application.css
201
+ - spec/dummy/app/controllers/application_controller.rb
202
+ - spec/dummy/app/controllers/concerns/.keep
203
+ - spec/dummy/app/controllers/posts_controller.rb
204
+ - spec/dummy/app/controllers/users_controller.rb
205
+ - spec/dummy/app/helpers/application_helper.rb
206
+ - spec/dummy/app/mailers/.keep
207
+ - spec/dummy/app/models/comment.rb
208
+ - spec/dummy/app/models/concerns/.keep
209
+ - spec/dummy/app/models/foo.rb
210
+ - spec/dummy/app/models/person.rb
211
+ - spec/dummy/app/models/post.rb
212
+ - spec/dummy/app/models/user.rb
213
+ - spec/dummy/app/views/layouts/application.html.erb
214
+ - spec/dummy/bin/bundle
215
+ - spec/dummy/bin/rails
216
+ - spec/dummy/bin/rake
217
+ - spec/dummy/bin/setup
218
+ - spec/dummy/config.ru
219
+ - spec/dummy/config/application.rb
220
+ - spec/dummy/config/boot.rb
221
+ - spec/dummy/config/database.yml
222
+ - spec/dummy/config/environment.rb
223
+ - spec/dummy/config/environments/development.rb
224
+ - spec/dummy/config/environments/production.rb
225
+ - spec/dummy/config/environments/test.rb
226
+ - spec/dummy/config/initializers/assets.rb
227
+ - spec/dummy/config/initializers/backtrace_silencers.rb
228
+ - spec/dummy/config/initializers/cookies_serializer.rb
229
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
230
+ - spec/dummy/config/initializers/inflections.rb
231
+ - spec/dummy/config/initializers/mime_types.rb
232
+ - spec/dummy/config/initializers/session_store.rb
233
+ - spec/dummy/config/initializers/wrap_parameters.rb
234
+ - spec/dummy/config/locales/en.yml
235
+ - spec/dummy/config/routes.rb
236
+ - spec/dummy/config/secrets.yml
237
+ - spec/dummy/db/schema.rb
238
+ - spec/dummy/lib/assets/.keep
239
+ - spec/dummy/log/.keep
240
+ - spec/dummy/public/404.html
241
+ - spec/dummy/public/422.html
242
+ - spec/dummy/public/500.html
243
+ - spec/dummy/public/favicon.ico
244
+ - spec/lib/compatibility_stamping_spec.rb
245
+ - spec/lib/migration_spec.rb
246
+ - spec/lib/stamping_spec.rb
247
+ - spec/lib/userstamp_spec.rb
248
+ - spec/rails_helper.rb
249
+ - spec/spec_helper.rb
250
+ - spec/support/database_helpers.rb
251
+ - spec/support/with_temporary_table.rb
252
+ homepage: https://github.com/lowjoel/activerecord-userstamp
253
+ licenses:
254
+ - MIT
255
+ metadata: {}
256
+ post_install_message:
257
+ rdoc_options: []
258
+ require_paths:
259
+ - lib
260
+ required_ruby_version: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ required_rubygems_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ requirements: []
271
+ rubyforge_project:
272
+ rubygems_version: 2.4.8
273
+ signing_key:
274
+ specification_version: 4
275
+ summary: Adds magic creator and updater attributes to your ActiveRecord models.
276
+ test_files: []