freeze_tag 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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: {}