freeze_tag 0.1.1 → 0.1.2
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 +4 -4
- data/Gemfile.lock +3 -1
- data/freeze_tag.gemspec +2 -1
- data/lib/freeze_tag/taggable.rb +25 -2
- data/lib/freeze_tag/version.rb +1 -1
- data/lib/generators/freeze_tag/install/templates/create_freeze_tag_tables.rb +10 -2
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df73d38aa0054b86cb5ca20c6e4e324102ac4202
|
4
|
+
data.tar.gz: 592b6a20d9a0b7506f54e84e968be8da76d5d501
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ee8f43b15e13b9c66f4e75e88e032ea53c3cacc46cd6018897401eb42c059aa0449ef268b407a7ccb9d270f7c3a772ccad1150ef5135103479f0fd406bc52e3
|
7
|
+
data.tar.gz: 4b83637a040414c2982fdaa4c3e0f3beb978b97ff2974d04c461aa4702df8ad6744a57d4077dac8abd1c9fe87eb3431f8342fb0ce15417922019b9c3c4be7da9
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
freeze_tag (0.1.
|
4
|
+
freeze_tag (0.1.2)
|
5
5
|
rails (>= 4.2)
|
6
6
|
|
7
7
|
GEM
|
@@ -51,6 +51,7 @@ GEM
|
|
51
51
|
rake
|
52
52
|
thor (>= 0.14.0)
|
53
53
|
arel (8.0.0)
|
54
|
+
awesome_print (1.8.0)
|
54
55
|
builder (3.2.3)
|
55
56
|
byebug (9.1.0)
|
56
57
|
coderay (1.1.2)
|
@@ -159,6 +160,7 @@ PLATFORMS
|
|
159
160
|
|
160
161
|
DEPENDENCIES
|
161
162
|
appraisal
|
163
|
+
awesome_print
|
162
164
|
bundler (~> 1.16)
|
163
165
|
byebug (~> 9.0)
|
164
166
|
database_cleaner (~> 1.5)
|
data/freeze_tag.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["paul@wework.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{A stateless tagging library}
|
13
|
-
spec.homepage = "https://
|
13
|
+
spec.homepage = "https://github.com/wework/freeze-tag"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency "database_cleaner", "~> 1.5"
|
33
33
|
spec.add_development_dependency 'appraisal'
|
34
34
|
spec.add_development_dependency 'webmock'
|
35
|
+
spec.add_development_dependency 'awesome_print'
|
35
36
|
end
|
data/lib/freeze_tag/taggable.rb
CHANGED
@@ -9,7 +9,18 @@ module FreezeTag
|
|
9
9
|
has_many :freeze_tags, as: :taggable, class_name: "FreezeTag::Tag"
|
10
10
|
has_many :active_freeze_tags, -> { where("expired_at IS NULL OR expired_at > ?", DateTime.now) }, as: :taggable, class_name: "FreezeTag::Tag"
|
11
11
|
|
12
|
-
|
12
|
+
attr_accessor :freeze_tagged
|
13
|
+
after_commit -> { create_freeze_tags_from_attr_accessor(validate: false) }
|
14
|
+
before_validation -> { create_freeze_tags_from_attr_accessor(validate: true) }
|
15
|
+
|
16
|
+
def create_freeze_tags_from_attr_accessor(validate: false)
|
17
|
+
return unless self.freeze_tagged.present?
|
18
|
+
self.freeze_tagged.to_a.each do |ft|
|
19
|
+
self.freeze_tag(as: ft[:as], expire_others: ft[:expire_others].present?, list: ft[:list], validate: validate)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def freeze_tag(as: [], expire_others: false, list: nil, validate: false)
|
13
24
|
ActiveRecord::Base.transaction do
|
14
25
|
as = as.is_a?(String) ? [as] : as
|
15
26
|
as = as.map(&:downcase) if self.class.try(:freeze_tag_case_sensitive)
|
@@ -18,8 +29,20 @@ module FreezeTag
|
|
18
29
|
active_freeze_tags.where(list: list).where.not(tag: as).update_all(expired_at: DateTime.now)
|
19
30
|
end
|
20
31
|
|
32
|
+
unless as.present?
|
33
|
+
self.errors.add(:freeze_tags, "Missing Tags")
|
34
|
+
return
|
35
|
+
end
|
36
|
+
|
21
37
|
as.each do |t|
|
22
|
-
|
38
|
+
if validate == false
|
39
|
+
ft = FreezeTag::Tag.find_or_create_by(taggable_type: self.class.name, taggable_id: self.id, tag: t, list: list, expired_at: nil)
|
40
|
+
else
|
41
|
+
ft = FreezeTag::Tag.find_or_initialize_by(taggable_type: self.class.name, taggable_id: self.id, tag: t, list: list, expired_at: nil)
|
42
|
+
unless ft.valid?
|
43
|
+
self.errors.add(:freeze_tags, "Freeze tag error #{ft.errors}")
|
44
|
+
end
|
45
|
+
end
|
23
46
|
end
|
24
47
|
end
|
25
48
|
end
|
data/lib/freeze_tag/version.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
class CreateFreezeTagTables < ActiveRecord::Migration
|
2
|
+
|
3
|
+
# TODO: You may experience the following error:
|
4
|
+
# Directly inheriting from ActiveRecord::Migration is not supported.
|
5
|
+
# Please specify the Rails release the migration was written for.
|
6
|
+
# If so, change the rails version to like:
|
7
|
+
# class CreateFreezeTagTables < ActiveRecord::Migration[5.1]
|
8
|
+
# to your file
|
9
|
+
|
2
10
|
def change
|
3
11
|
|
4
12
|
raise "Please, make sure you've configured this correctly. Then remove this happy little warning :-)"
|
@@ -13,8 +21,8 @@ class CreateFreezeTagTables < ActiveRecord::Migration
|
|
13
21
|
t.timestamps
|
14
22
|
end
|
15
23
|
|
16
|
-
add_index :freeze_tags, [:taggable_type, :taggable_id, :tag, :expired_at, :list]
|
17
|
-
add_index :freeze_tags, [:taggable_type, :taggable_id, :expired_at, :list]
|
24
|
+
add_index :freeze_tags, [:taggable_type, :taggable_id, :tag, :expired_at, :list], name: "ft_tt_tid_t_exp_list"
|
25
|
+
add_index :freeze_tags, [:taggable_type, :taggable_id, :expired_at, :list], name: "ft_tt_tid_exp_list"
|
18
26
|
add_index :freeze_tags, [:tag, :expired_at, :list]
|
19
27
|
add_index :freeze_tags, [:taggable_type, :taggable_id, :tag, :list, :expired_at], unique: true, name: "fz_unique_tt_tid_t_li_ex_at"
|
20
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freeze_tag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Franzen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: awesome_print
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
description:
|
168
182
|
email:
|
169
183
|
- paul@wework.com
|
@@ -192,7 +206,7 @@ files:
|
|
192
206
|
- lib/generators/freeze_tag/install/.DS_Store
|
193
207
|
- lib/generators/freeze_tag/install/install_generator.rb
|
194
208
|
- lib/generators/freeze_tag/install/templates/create_freeze_tag_tables.rb
|
195
|
-
homepage: https://
|
209
|
+
homepage: https://github.com/wework/freeze-tag
|
196
210
|
licenses:
|
197
211
|
- MIT
|
198
212
|
metadata: {}
|