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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7026c601f2468b7dbc1c55128bcb05f2e0e5b69
4
- data.tar.gz: 95aa739db8ed9f23ff7b9f669aa25d31b1403305
3
+ metadata.gz: df73d38aa0054b86cb5ca20c6e4e324102ac4202
4
+ data.tar.gz: 592b6a20d9a0b7506f54e84e968be8da76d5d501
5
5
  SHA512:
6
- metadata.gz: 3f0bc37e41913104bad687f23aa95a9b0f1209304b9126ac302ba2e5b369965afaedabca3fde1306eb8d6ff0dd8b0d0829e5e3ef317d617654b661e751adcc10
7
- data.tar.gz: 630ffb47d31a07a01f9e039e8b92cc01c41fb3b8cf9f5cc39135bb656b182111d1a9caf8bc74c2d27ae049f7cca7886c610b06b82fd097e79a1e309c9eef0f33
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.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://wework.com"
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
@@ -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
- def freeze_tag(as: [], expire_others: false, list: nil)
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
- ft = FreezeTag::Tag.find_or_create_by(taggable_type: self.class.name, taggable_id: self.id, tag: t, list: list, expired_at: nil)
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
@@ -1,3 +1,3 @@
1
1
  module FreezeTag
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -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.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-06 00:00:00.000000000 Z
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://wework.com
209
+ homepage: https://github.com/wework/freeze-tag
196
210
  licenses:
197
211
  - MIT
198
212
  metadata: {}