userstamper 4.0.0
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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.travis.yml +35 -0
- data/CHANGELOG.md +116 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +222 -0
- data/LICENSE +22 -0
- data/README.md +142 -0
- data/lib/userstamper.rb +23 -0
- data/lib/userstamper/configuration.rb +40 -0
- data/lib/userstamper/controller_concern.rb +44 -0
- data/lib/userstamper/migration_concern.rb +9 -0
- data/lib/userstamper/model_concern.rb +6 -0
- data/lib/userstamper/railtie.rb +15 -0
- data/lib/userstamper/stampable.rb +106 -0
- data/lib/userstamper/stamper.rb +54 -0
- data/lib/userstamper/utilities.rb +57 -0
- data/spec/controllers/posts_controller_spec.rb +44 -0
- data/spec/controllers/users_controller_spec.rb +50 -0
- data/spec/coverage_helper.rb +58 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/config/manifest.js +0 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +13 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/controllers/posts_controller.rb +36 -0
- data/spec/dummy/app/controllers/users_controller.rb +22 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/comment.rb +5 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/models/person.rb +3 -0
- data/spec/dummy/app/models/post.rb +6 -0
- data/spec/dummy/app/models/tag.rb +3 -0
- data/spec/dummy/app/models/user.rb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +12 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +23 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +56 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/lib/configuration_spec.rb +20 -0
- data/spec/lib/migration_spec.rb +60 -0
- data/spec/lib/stamper_spec.rb +66 -0
- data/spec/lib/stamping_spec.rb +235 -0
- data/spec/lib/userstamp_spec.rb +4 -0
- data/spec/rails_helper.rb +7 -0
- data/spec/spec_helper.rb +98 -0
- data/spec/support/database_helpers.rb +73 -0
- data/spec/support/with_temporary_table.rb +51 -0
- data/userstamper.gemspec +46 -0
- metadata +279 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 573cc10f10027aeabf2f04892ea63c517fed448bdea2f909c4f307d9123d1944
|
4
|
+
data.tar.gz: 62283d938f34afaedcc402efa5fdf2be2446c253fa55773094bf760fee4ea6c2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c3c6dbfa08158b688a48d54f01c39c59e3fd487e83b393407d48990cc369fe2683fb18e2ecf08302487574d31944815cc33c8aa25042308b9b26adc4ac4816cf
|
7
|
+
data.tar.gz: d732dc019eb418216f9c0e0bfdfeb9c85b57103a8d3d3c878e24bd45b1dd3fe9ba756d86b3ca56a2ba76ca8bda1c4910226c3e37625578999e6258f83cdd61fc
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.1.10
|
5
|
+
- 2.2.6
|
6
|
+
- 2.3.3
|
7
|
+
- 2.4.0
|
8
|
+
- ruby-head
|
9
|
+
env:
|
10
|
+
- "RAILS_VERSION=4.1.0"
|
11
|
+
- "RAILS_VERSION=4.2.0"
|
12
|
+
- "RAILS_VERSION=5.0.0"
|
13
|
+
matrix:
|
14
|
+
allow_failures:
|
15
|
+
- rvm: ruby-head
|
16
|
+
exclude:
|
17
|
+
- rvm: 2.1.10
|
18
|
+
env: "RAILS_VERSION=5.0.0"
|
19
|
+
- rvm: 2.4.0
|
20
|
+
env: "RAILS_VERSION=4.1.0"
|
21
|
+
- rvm: 2.4.0
|
22
|
+
env: "RAILS_VERSION=4.2.0"
|
23
|
+
- rvm: ruby-head
|
24
|
+
env: "RAILS_VERSION=4.1.0"
|
25
|
+
- rvm: ruby-head
|
26
|
+
env: "RAILS_VERSION=4.2.0"
|
27
|
+
|
28
|
+
bundler_args: "--jobs=3 --retry=3"
|
29
|
+
cache: bundler
|
30
|
+
|
31
|
+
before_install:
|
32
|
+
- gem update bundler
|
33
|
+
|
34
|
+
after_success:
|
35
|
+
- bundle exec codeclimate-test-reporter
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
# Changelog
|
2
|
+
## 4.0.0 (09-04-2021)
|
3
|
+
* Priit Tark - Rails 6.1 support and renamed gem to userstamper
|
4
|
+
|
5
|
+
## 3.0.5 (22-8-2017)
|
6
|
+
* Jonathan Putney - Support Rails 5.0.
|
7
|
+
* Joel Low - Add additional combinations to Travis build matrix.
|
8
|
+
* Joel Low - Defer association definitions until the schema is loaded.
|
9
|
+
* Joel Low - Respect custom stamper definitions.
|
10
|
+
|
11
|
+
## 3.0.4 (14-7-2015)
|
12
|
+
* Joel Low - Allow using ActiveRecord-Userstamp with anonymous models (e.g. some
|
13
|
+
`has_and_belongs_to_many` join tables.)
|
14
|
+
|
15
|
+
## 3.0.3 (14-7-2015)
|
16
|
+
* Joel Low - Allow using ActiveRecord-Userstamp with generated tables (e.g.
|
17
|
+
`has_and_belongs_to_many` join tables.)
|
18
|
+
|
19
|
+
## 3.0.2 (12-7-2015)
|
20
|
+
* Joel Low - Depending on what was set to a stamper (ID or record object), the
|
21
|
+
association ID or association setter is used to assign the
|
22
|
+
creator/updater/deleter attributes. This only applies if the attributes
|
23
|
+
end with `_id`; otherwise the attribute would be used verbatim (e.g. the
|
24
|
+
compatibility mode `created_by`).
|
25
|
+
* Joel Low - Provide a `with_stamper` method to specify the stamper for a given
|
26
|
+
stamper class during the execution of the block.
|
27
|
+
* Joel Low - Ensure that the `set_stamper` and `reset_stamper` calls from the
|
28
|
+
controller are always paired so that the stamper state is always properly
|
29
|
+
restored. `set_stamper` and `reset_stamper` is now deprecated and will be
|
30
|
+
removed in ActiveRecord::Userstamp 3.1 and replaced with a single
|
31
|
+
`with_stamper` `around_action` callback.
|
32
|
+
|
33
|
+
## 3.0.1 (11-7-2015)
|
34
|
+
* Joel Low - Only declare the creator/updater/deleter associations when the table has
|
35
|
+
the attribute columns. If the columns cannot be determined (e.g. if the
|
36
|
+
table has not been defined, such as during tests), then the model would
|
37
|
+
need to explicitly call `stampable`.
|
38
|
+
|
39
|
+
## 3.0.0 (10-7-2015)
|
40
|
+
* Joel Low - Remove `compatibility_mode`. Use the `creator_attribute`,
|
41
|
+
`updater_attribute`, and `deleter_attribute` configuration options instead.
|
42
|
+
* Joel Low - The table definition migration helper should follow the gem configuration
|
43
|
+
when generating column names.
|
44
|
+
* Joel Low - When deciding whether to generate a `deleter_id` column, check the gem
|
45
|
+
configuration for the `deleter_attribute` configuration option instead of
|
46
|
+
relying on the user to specify in every migration.
|
47
|
+
* Joel Low - Remove the `deleter` option from the `stampable` model declaration.
|
48
|
+
* Joel Low - Remove the `creator_attribute`, `updater_attribute`, and `deleter_attribute`
|
49
|
+
options from the `stampable` model declaration. All models will follow
|
50
|
+
the gem configuration.
|
51
|
+
* Joel Low - Added the `default_stamper` configuration option. The controller will
|
52
|
+
automatically stamp using that model.
|
53
|
+
* Joel Low - Additional attributes passed to `stampable` would be passed to the
|
54
|
+
underlying `belongs_to` association.
|
55
|
+
* Joel Low - Declare the creator/updater/deleter setter callbacks directly in
|
56
|
+
`ActiveRecord::Base`. So now, all models will automatically be stamped
|
57
|
+
when the creator/updater/deleter attributes are present. This mirrors
|
58
|
+
`ActiveRecord::Timestamp` behaviour.
|
59
|
+
* Joel Low - Automatically declare the creator/updater/deleter associations on every
|
60
|
+
model. To add additional configuration options, simply call `stampable`.
|
61
|
+
This can be called multiple times per model; the last call takes effect.
|
62
|
+
* Joel Low - Remove support for `serialized_attributes`. It will be removed in Rails 5.
|
63
|
+
|
64
|
+
## 2.1.1 (9-7-2015)
|
65
|
+
|
66
|
+
* Chris Hilton - Only set updater attribute if the record has changed or contains a
|
67
|
+
serialized attribute.
|
68
|
+
* Chris Hilton - Support `:with_deleted` in the `stampable` declaration.
|
69
|
+
* Chris Hilton - Only set the creator attribute if it is blank.
|
70
|
+
* Chris Branson - Fix deprecation warning in `serialized_attributes`.
|
71
|
+
* Joel Low - Trigger the updater/creator stamping before saving, so that the correct
|
72
|
+
users are stamped even if validation was not run.
|
73
|
+
* Joel Low - Allow extra parameters to be passed to the migration helpers.
|
74
|
+
|
75
|
+
## 2.1.0 (28-3-2014)
|
76
|
+
* Thomas von Deyen - Do not automatically make every class stampable.
|
77
|
+
|
78
|
+
## 2.0.2 (11-8-2011)
|
79
|
+
* Chris Hilton - Set the creator/updater attributes before validation, so that they can
|
80
|
+
be checked as part of validations.
|
81
|
+
* Alex - Specify that the stampable class is camelized from the given symbol,
|
82
|
+
not just capitalized, to follow ActiveRecord convention.
|
83
|
+
## 2.0.1 (8-10-2010)
|
84
|
+
* Michael Grosser - Make stampable define the deleter association and before filter whenever
|
85
|
+
a :deleter_attribute has been passed in options, or :deleter => true is
|
86
|
+
passed, or Caboose::Acts::Paranoid is defined. This makes :deleter
|
87
|
+
functionality useable to people who aren't use acts_as_paranoid.
|
88
|
+
* Michael Grosser - do not leave record_userstamp turned on when an exception occurs inside
|
89
|
+
the `without_stamps` block
|
90
|
+
|
91
|
+
## 2.0 (2-17-2008)
|
92
|
+
* Ben Wyrosdick - Added a migration helper that gives migration scripts a <tt>userstamps</tt>
|
93
|
+
method.
|
94
|
+
* Marshall Roch - Stamping can be temporarily turned off using the 'without_stamps' class
|
95
|
+
method.
|
96
|
+
Example:
|
97
|
+
Post.without_stamps do
|
98
|
+
post = Post.find(params[:id])
|
99
|
+
post.update_attributes(params[:post])
|
100
|
+
post.save
|
101
|
+
end
|
102
|
+
|
103
|
+
* Models that should receive updates made by 'stampers' now use the acts_as_stampable class
|
104
|
+
method. This sets up the belongs_to relationships and also injects private methods for use by
|
105
|
+
the individual callback filter methods.
|
106
|
+
|
107
|
+
* Models that are responsible for updating now use the acts_as_stamper class method. This
|
108
|
+
injects the stamper= and stamper methods that are thread safe and should be updated per
|
109
|
+
request by a controller.
|
110
|
+
|
111
|
+
* The Userstamp module is now meant to be included with one of your project's controllers (the
|
112
|
+
Application Controller is recommended). It creates a before filter called 'set_stampers' that
|
113
|
+
is responsible for setting all the current Stampers.
|
114
|
+
|
115
|
+
## 1.0 (01-18-2006)
|
116
|
+
* Initial Release
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,222 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
userstamp (4.0.0)
|
5
|
+
rails (>= 6)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
actioncable (6.1.3.1)
|
11
|
+
actionpack (= 6.1.3.1)
|
12
|
+
activesupport (= 6.1.3.1)
|
13
|
+
nio4r (~> 2.0)
|
14
|
+
websocket-driver (>= 0.6.1)
|
15
|
+
actionmailbox (6.1.3.1)
|
16
|
+
actionpack (= 6.1.3.1)
|
17
|
+
activejob (= 6.1.3.1)
|
18
|
+
activerecord (= 6.1.3.1)
|
19
|
+
activestorage (= 6.1.3.1)
|
20
|
+
activesupport (= 6.1.3.1)
|
21
|
+
mail (>= 2.7.1)
|
22
|
+
actionmailer (6.1.3.1)
|
23
|
+
actionpack (= 6.1.3.1)
|
24
|
+
actionview (= 6.1.3.1)
|
25
|
+
activejob (= 6.1.3.1)
|
26
|
+
activesupport (= 6.1.3.1)
|
27
|
+
mail (~> 2.5, >= 2.5.4)
|
28
|
+
rails-dom-testing (~> 2.0)
|
29
|
+
actionpack (6.1.3.1)
|
30
|
+
actionview (= 6.1.3.1)
|
31
|
+
activesupport (= 6.1.3.1)
|
32
|
+
rack (~> 2.0, >= 2.0.9)
|
33
|
+
rack-test (>= 0.6.3)
|
34
|
+
rails-dom-testing (~> 2.0)
|
35
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
36
|
+
actiontext (6.1.3.1)
|
37
|
+
actionpack (= 6.1.3.1)
|
38
|
+
activerecord (= 6.1.3.1)
|
39
|
+
activestorage (= 6.1.3.1)
|
40
|
+
activesupport (= 6.1.3.1)
|
41
|
+
nokogiri (>= 1.8.5)
|
42
|
+
actionview (6.1.3.1)
|
43
|
+
activesupport (= 6.1.3.1)
|
44
|
+
builder (~> 3.1)
|
45
|
+
erubi (~> 1.4)
|
46
|
+
rails-dom-testing (~> 2.0)
|
47
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
48
|
+
activejob (6.1.3.1)
|
49
|
+
activesupport (= 6.1.3.1)
|
50
|
+
globalid (>= 0.3.6)
|
51
|
+
activemodel (6.1.3.1)
|
52
|
+
activesupport (= 6.1.3.1)
|
53
|
+
activerecord (6.1.3.1)
|
54
|
+
activemodel (= 6.1.3.1)
|
55
|
+
activesupport (= 6.1.3.1)
|
56
|
+
activestorage (6.1.3.1)
|
57
|
+
actionpack (= 6.1.3.1)
|
58
|
+
activejob (= 6.1.3.1)
|
59
|
+
activerecord (= 6.1.3.1)
|
60
|
+
activesupport (= 6.1.3.1)
|
61
|
+
marcel (~> 1.0.0)
|
62
|
+
mini_mime (~> 1.0.2)
|
63
|
+
activesupport (6.1.3.1)
|
64
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
65
|
+
i18n (>= 1.6, < 2)
|
66
|
+
minitest (>= 5.1)
|
67
|
+
tzinfo (~> 2.0)
|
68
|
+
zeitwerk (~> 2.3)
|
69
|
+
builder (3.2.4)
|
70
|
+
codeclimate-test-reporter (1.0.7)
|
71
|
+
simplecov
|
72
|
+
coderay (1.1.3)
|
73
|
+
concurrent-ruby (1.1.8)
|
74
|
+
coveralls (0.7.1)
|
75
|
+
multi_json (~> 1.3)
|
76
|
+
rest-client
|
77
|
+
simplecov (>= 0.7)
|
78
|
+
term-ansicolor
|
79
|
+
thor
|
80
|
+
crass (1.0.6)
|
81
|
+
diff-lcs (1.4.4)
|
82
|
+
docile (1.3.5)
|
83
|
+
domain_name (0.5.20190701)
|
84
|
+
unf (>= 0.0.5, < 1.0.0)
|
85
|
+
erubi (1.10.0)
|
86
|
+
globalid (0.4.2)
|
87
|
+
activesupport (>= 4.2.0)
|
88
|
+
http-accept (1.7.0)
|
89
|
+
http-cookie (1.0.3)
|
90
|
+
domain_name (~> 0.5)
|
91
|
+
i18n (1.8.10)
|
92
|
+
concurrent-ruby (~> 1.0)
|
93
|
+
loofah (2.9.1)
|
94
|
+
crass (~> 1.0.2)
|
95
|
+
nokogiri (>= 1.5.9)
|
96
|
+
mail (2.7.1)
|
97
|
+
mini_mime (>= 0.1.1)
|
98
|
+
marcel (1.0.1)
|
99
|
+
method_source (1.0.0)
|
100
|
+
mime-types (3.3.1)
|
101
|
+
mime-types-data (~> 3.2015)
|
102
|
+
mime-types-data (3.2021.0225)
|
103
|
+
mini_mime (1.0.3)
|
104
|
+
mini_portile2 (2.5.0)
|
105
|
+
minitest (5.14.4)
|
106
|
+
multi_json (1.15.0)
|
107
|
+
netrc (0.11.0)
|
108
|
+
nio4r (2.5.7)
|
109
|
+
nokogiri (1.11.3)
|
110
|
+
mini_portile2 (~> 2.5.0)
|
111
|
+
racc (~> 1.4)
|
112
|
+
pry (0.14.0)
|
113
|
+
coderay (~> 1.1)
|
114
|
+
method_source (~> 1.0)
|
115
|
+
racc (1.5.2)
|
116
|
+
rack (2.2.3)
|
117
|
+
rack-test (1.1.0)
|
118
|
+
rack (>= 1.0, < 3)
|
119
|
+
rails (6.1.3.1)
|
120
|
+
actioncable (= 6.1.3.1)
|
121
|
+
actionmailbox (= 6.1.3.1)
|
122
|
+
actionmailer (= 6.1.3.1)
|
123
|
+
actionpack (= 6.1.3.1)
|
124
|
+
actiontext (= 6.1.3.1)
|
125
|
+
actionview (= 6.1.3.1)
|
126
|
+
activejob (= 6.1.3.1)
|
127
|
+
activemodel (= 6.1.3.1)
|
128
|
+
activerecord (= 6.1.3.1)
|
129
|
+
activestorage (= 6.1.3.1)
|
130
|
+
activesupport (= 6.1.3.1)
|
131
|
+
bundler (>= 1.15.0)
|
132
|
+
railties (= 6.1.3.1)
|
133
|
+
sprockets-rails (>= 2.0.0)
|
134
|
+
rails-dom-testing (2.0.3)
|
135
|
+
activesupport (>= 4.2.0)
|
136
|
+
nokogiri (>= 1.6)
|
137
|
+
rails-html-sanitizer (1.3.0)
|
138
|
+
loofah (~> 2.3)
|
139
|
+
railties (6.1.3.1)
|
140
|
+
actionpack (= 6.1.3.1)
|
141
|
+
activesupport (= 6.1.3.1)
|
142
|
+
method_source
|
143
|
+
rake (>= 0.8.7)
|
144
|
+
thor (~> 1.0)
|
145
|
+
rake (13.0.3)
|
146
|
+
rdoc (6.3.0)
|
147
|
+
rest-client (2.1.0)
|
148
|
+
http-accept (>= 1.7.0, < 2.0)
|
149
|
+
http-cookie (>= 1.0.2, < 2.0)
|
150
|
+
mime-types (>= 1.16, < 4.0)
|
151
|
+
netrc (~> 0.8)
|
152
|
+
rspec (3.10.0)
|
153
|
+
rspec-core (~> 3.10.0)
|
154
|
+
rspec-expectations (~> 3.10.0)
|
155
|
+
rspec-mocks (~> 3.10.0)
|
156
|
+
rspec-core (3.10.1)
|
157
|
+
rspec-support (~> 3.10.0)
|
158
|
+
rspec-expectations (3.10.1)
|
159
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
160
|
+
rspec-support (~> 3.10.0)
|
161
|
+
rspec-instafail (1.0.0)
|
162
|
+
rspec
|
163
|
+
rspec-mocks (3.10.2)
|
164
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
165
|
+
rspec-support (~> 3.10.0)
|
166
|
+
rspec-rails (5.0.1)
|
167
|
+
actionpack (>= 5.2)
|
168
|
+
activesupport (>= 5.2)
|
169
|
+
railties (>= 5.2)
|
170
|
+
rspec-core (~> 3.10)
|
171
|
+
rspec-expectations (~> 3.10)
|
172
|
+
rspec-mocks (~> 3.10)
|
173
|
+
rspec-support (~> 3.10)
|
174
|
+
rspec-support (3.10.2)
|
175
|
+
simplecov (0.21.2)
|
176
|
+
docile (~> 1.1)
|
177
|
+
simplecov-html (~> 0.11)
|
178
|
+
simplecov_json_formatter (~> 0.1)
|
179
|
+
simplecov-html (0.12.3)
|
180
|
+
simplecov_json_formatter (0.1.2)
|
181
|
+
sprockets (4.0.2)
|
182
|
+
concurrent-ruby (~> 1.0)
|
183
|
+
rack (> 1, < 3)
|
184
|
+
sprockets-rails (3.2.2)
|
185
|
+
actionpack (>= 4.0)
|
186
|
+
activesupport (>= 4.0)
|
187
|
+
sprockets (>= 3.0.0)
|
188
|
+
sqlite3 (1.4.2)
|
189
|
+
sync (0.5.0)
|
190
|
+
term-ansicolor (1.7.1)
|
191
|
+
tins (~> 1.0)
|
192
|
+
thor (1.1.0)
|
193
|
+
tins (1.28.0)
|
194
|
+
sync
|
195
|
+
tzinfo (2.0.4)
|
196
|
+
concurrent-ruby (~> 1.0)
|
197
|
+
unf (0.1.4)
|
198
|
+
unf_ext
|
199
|
+
unf_ext (0.0.7.7)
|
200
|
+
websocket-driver (0.7.3)
|
201
|
+
websocket-extensions (>= 0.1.0)
|
202
|
+
websocket-extensions (0.1.5)
|
203
|
+
zeitwerk (2.4.2)
|
204
|
+
|
205
|
+
PLATFORMS
|
206
|
+
ruby
|
207
|
+
|
208
|
+
DEPENDENCIES
|
209
|
+
codeclimate-test-reporter
|
210
|
+
coveralls
|
211
|
+
pry
|
212
|
+
rake
|
213
|
+
rdoc
|
214
|
+
rspec
|
215
|
+
rspec-instafail
|
216
|
+
rspec-rails (>= 3.3)
|
217
|
+
simplecov
|
218
|
+
sqlite3
|
219
|
+
userstamp!
|
220
|
+
|
221
|
+
BUNDLED WITH
|
222
|
+
2.1.4
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2006-2008 DeLynn Berry
|
2
|
+
Copyright (c) 2014-2015 Joel Low
|
3
|
+
Copyright (c) 2021 Priit Tark
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
# Userstamper
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
Userstamp extends `ActiveRecord::Base` to add automatic updating of `creator` and `updater` attributes.
|
6
|
+
|
7
|
+
Two class methods (`model_stamper` and `stampable`) are implemented in this gem. The `model_stamper`
|
8
|
+
method is used in models that are responsible for creating or updating other objects.
|
9
|
+
Typically this would be the `User` model of your application. The `stampable` method is used in
|
10
|
+
models that are subject to being created or updated by stampers.
|
11
|
+
|
12
|
+
Gem is tested with Ruby 2.7.2 and Rails 6.1.3.1
|
13
|
+
|
14
|
+
## Features
|
15
|
+
to result in a `belongs_to` relation which looks like:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
belongs_to :creator, class_name: '::User', foreign_key: :created_by
|
19
|
+
```
|
20
|
+
|
21
|
+
### Saving before validation
|
22
|
+
This includes changes to perform model stamping before validation. This allows models to
|
23
|
+
enforce the presence of stamp attributes:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
validates :created_by, presence: true
|
27
|
+
validates :updated_by, presence: true
|
28
|
+
```
|
29
|
+
|
30
|
+
Furthermore, the `creator` attribute is set only if the value is blank allowing for a manual
|
31
|
+
override.
|
32
|
+
|
33
|
+
## Usage
|
34
|
+
Assume that we are building a blog application, with User and Post objects. Add the following
|
35
|
+
to the application's Gemfile:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
gem 'userstamper'
|
39
|
+
```
|
40
|
+
|
41
|
+
Define an initializer in your Rails application to configure the gem:
|
42
|
+
config/initilialize/userstamper.rb:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
Userstamper.configure do |config|
|
46
|
+
# config.default_stamper = 'User'
|
47
|
+
# config.creator_attribute = :creator_id
|
48
|
+
# config.updater_attribute = :updater_id
|
49
|
+
config.deleter_attribute = nil
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
Ensure that each model has a set of columns for creators and updaters.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
class CreateUsers < ActiveRecord::Migration
|
57
|
+
def change
|
58
|
+
create_table :users do |t|
|
59
|
+
...
|
60
|
+
t.userstamps
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class CreatePosts < ActiveRecord::Migration
|
66
|
+
def change
|
67
|
+
create_table :posts do |t|
|
68
|
+
...
|
69
|
+
t.userstamps
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
```
|
74
|
+
|
75
|
+
If you use `protect_from_forgery`, make sure the hooks are prepended:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
class ApplicationController < ActionController::Base
|
79
|
+
protect_from_forgery with: :exception, prepend: true # with: anything will do, note `prepend: true`!
|
80
|
+
end
|
81
|
+
```
|
82
|
+
|
83
|
+
Declare the stamper on the User model:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
class User < ActiveRecord::Base
|
87
|
+
model_stamper
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
If your stamper is called `User`, that's it; you're done.
|
92
|
+
|
93
|
+
## Customisation
|
94
|
+
The association which is created on each of the `creator_id` and `updater_id` can
|
95
|
+
be customised. Also, the stamper used by each class can also be customised. For this purpose, the
|
96
|
+
`ActiveRecord::Base.stampable` method can be used:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
class Post < ActiveRecord::Base
|
100
|
+
stampable
|
101
|
+
end
|
102
|
+
```
|
103
|
+
|
104
|
+
The `stampable` method allows you to customize the `creator` and `updater` associations.
|
105
|
+
It also allows you to specify the name of the stamper for the class being declared. Any additional
|
106
|
+
arguments are passed to the `belongs_to` declaration.
|
107
|
+
|
108
|
+
## Upgrade
|
109
|
+
When upgradeing from activerecord_userstamp gem, please remove deleted attributes.
|
110
|
+
Soft delete is not supported and not recommended. Soft delete is more pain in real life.
|
111
|
+
|
112
|
+
## Tests
|
113
|
+
Run
|
114
|
+
|
115
|
+
$ bundle exec rspec
|
116
|
+
|
117
|
+
## Forkception
|
118
|
+
|
119
|
+
This is a fork of:
|
120
|
+
- the [activerecord-userstamp](https://github.com/lowjoel/activerecord-userstamp) gem
|
121
|
+
- the [magiclabs-userstamp](https://github.com/magiclabs/userstamp) gem
|
122
|
+
- which is a fork of [Michael Grosser's](https://github.com/grosser)
|
123
|
+
[userstamp gem] (https://github.com/grosser/userstamp)
|
124
|
+
- which is a fork of the original [userstamp plugin](https://github.com/delynn/userstamp) by
|
125
|
+
[delynn](https://github.com/delynn)
|
126
|
+
|
127
|
+
In addition to these, some ideas are cherry picked from the following forks:
|
128
|
+
|
129
|
+
- [simplificator](https://github.com/simplificator/userstamp)
|
130
|
+
- [akm](https://github.com/akm/magic_userstamp)
|
131
|
+
- [konvenit](https://github.com/konvenit/userstamp)
|
132
|
+
|
133
|
+
## Authors
|
134
|
+
- [DeLynn Berry](http://delynnberry.com/): The original idea for this plugin came from the Rails
|
135
|
+
Wiki article entitled
|
136
|
+
[Extending ActiveRecord](http://wiki.rubyonrails.com/rails/pages/ExtendingActiveRecordExample)
|
137
|
+
- [Michael Grosser](http://pragmatig.com)
|
138
|
+
- [John Dell](http://blog.spovich.com/)
|
139
|
+
- [Chris Hilton](https://github.com/chrismhilton)
|
140
|
+
- [Thomas von Deyen](https://github.com/tvdeyen)
|
141
|
+
- [Joel Low](http://joelsplace.sg)
|
142
|
+
- [Priit Tark](https://github.com/priit)
|