hstore_flags 0.2.0 → 0.3.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6e686a0ea0b3be6411d2cc926b7c0cfd4ad710f4
4
+ data.tar.gz: 666ab02a4e823bdc71282db46836f703ff1ff410
5
+ SHA512:
6
+ metadata.gz: 2954317f122b1a388a0a55ed53de61b2732e724a965266aeaffc0a8d47e0b80ac3c4c4bddc10ebaa9581a20ed431784bcdd6e102623c7fb362bcf26d814bafb6
7
+ data.tar.gz: 269644cf3141f1b44b6e0a109f19a0646f7828664307efa1059e77cdbba3a818f83cab72b876165f993105ff64f5c91e87d69c579402728647f961c5a94dd590
data/Gemfile CHANGED
@@ -1,8 +1,2 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
-
4
- gem 'activerecord', '~>3.0'
5
- gem 'activerecord-postgres-hstore', '~>0.4'
6
- gem 'pg', '~>0.14'
7
- gem 'rspec', '~>2'
8
- gem 'rake'
data/Gemfile.lock CHANGED
@@ -2,52 +2,50 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  hstore_flags (0.2.0)
5
- activerecord (~> 3.1)
6
- activerecord-postgres-hstore (~> 0.7.5)
5
+ activerecord (~> 4.0)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- activemodel (3.2.13)
12
- activesupport (= 3.2.13)
13
- builder (~> 3.0.0)
14
- activerecord (3.2.13)
15
- activemodel (= 3.2.13)
16
- activesupport (= 3.2.13)
17
- arel (~> 3.0.2)
18
- tzinfo (~> 0.3.29)
19
- activerecord-postgres-hstore (0.7.6)
20
- activerecord (>= 3.1)
21
- pg-hstore (>= 1.1.5)
22
- rake
23
- activesupport (3.2.13)
24
- i18n (= 0.6.1)
25
- multi_json (~> 1.0)
26
- arel (3.0.2)
27
- builder (3.0.4)
10
+ activemodel (4.0.0)
11
+ activesupport (= 4.0.0)
12
+ builder (~> 3.1.0)
13
+ activerecord (4.0.0)
14
+ activemodel (= 4.0.0)
15
+ activerecord-deprecated_finders (~> 1.0.2)
16
+ activesupport (= 4.0.0)
17
+ arel (~> 4.0.0)
18
+ activerecord-deprecated_finders (1.0.3)
19
+ activesupport (4.0.0)
20
+ i18n (~> 0.6, >= 0.6.4)
21
+ minitest (~> 4.2)
22
+ multi_json (~> 1.3)
23
+ thread_safe (~> 0.1)
24
+ tzinfo (~> 0.3.37)
25
+ arel (4.0.0)
26
+ atomic (1.1.14)
27
+ builder (3.1.4)
28
28
  diff-lcs (1.2.4)
29
- i18n (0.6.1)
30
- multi_json (1.7.3)
31
- pg (0.15.1)
32
- pg-hstore (1.1.7)
33
- rake (10.0.4)
34
- rspec (2.13.0)
35
- rspec-core (~> 2.13.0)
36
- rspec-expectations (~> 2.13.0)
37
- rspec-mocks (~> 2.13.0)
38
- rspec-core (2.13.1)
39
- rspec-expectations (2.13.0)
29
+ i18n (0.6.5)
30
+ minitest (4.7.5)
31
+ multi_json (1.8.0)
32
+ pg (0.17.0)
33
+ rspec (2.14.1)
34
+ rspec-core (~> 2.14.0)
35
+ rspec-expectations (~> 2.14.0)
36
+ rspec-mocks (~> 2.14.0)
37
+ rspec-core (2.14.5)
38
+ rspec-expectations (2.14.3)
40
39
  diff-lcs (>= 1.1.3, < 2.0)
41
- rspec-mocks (2.13.1)
40
+ rspec-mocks (2.14.3)
41
+ thread_safe (0.1.3)
42
+ atomic
42
43
  tzinfo (0.3.37)
43
44
 
44
45
  PLATFORMS
45
46
  ruby
46
47
 
47
48
  DEPENDENCIES
48
- activerecord (~> 3.0)
49
- activerecord-postgres-hstore (~> 0.4)
50
49
  hstore_flags!
51
- pg (~> 0.14)
52
- rake
53
- rspec (~> 2)
50
+ pg
51
+ rspec
data/README.md CHANGED
@@ -6,7 +6,7 @@ integer/bit flags aggrevating you? try this.
6
6
  Requirements
7
7
  ------------
8
8
 
9
- * Rails 3.0 or greater
9
+ * Rails 4.0 or greater
10
10
  * Postgresql 8.4+ with contrib package
11
11
  * Read [activerecord-postgres-hstore](https://raw.github.com/engageis/activerecord-postgres-hstore) for index creation
12
12
 
data/hstore_flags.gemspec CHANGED
@@ -12,8 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.license = "MIT"
13
13
  s.require_paths = ["lib"]
14
14
 
15
- s.add_dependency "activerecord", "~> 3.1"
16
- s.add_dependency "activerecord-postgres-hstore", "~> 0.7.5"
15
+ s.add_dependency "activerecord", "~> 4.0"
17
16
 
18
17
  s.add_development_dependency "rspec"
19
18
  s.add_development_dependency "pg"
@@ -1,3 +1,3 @@
1
1
  module HStoreFlags
2
- Version = VERSION = "0.2.0"
2
+ Version = VERSION = "0.3.0"
3
3
  end
data/lib/hstore_flags.rb CHANGED
@@ -1,52 +1,48 @@
1
1
  require 'hstore_flags/version'
2
- require 'activerecord-postgres-hstore'
3
2
 
4
3
  module HStoreFlags
4
+ extend ActiveSupport::Concern
5
5
  TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE']
6
+ STORED_TRUE_VALUE = 'true'
6
7
 
7
- def self.included(base)
8
- base.extend(ClassMethods)
8
+ private
9
9
 
10
- protected
11
- def set_hstore_flag_field(field, flag, value)
12
- new_val = TRUE_VALUES.include?(value)
13
- old_val = self.send(flag)
14
- return if new_val == old_val
10
+ def set_hstore_flag_field(field, flag, value)
11
+ new_val = TRUE_VALUES.include?(value)
12
+ old_val = send(flag)
13
+ return if new_val == old_val
15
14
 
16
- if defined? changed_attributes
17
- send(:changed_attributes).merge!(flag.to_s => old_val)
18
- end
15
+ send("#{field}_will_change!")
16
+ if defined? changed_attributes
17
+ send(:changed_attributes).merge!(flag.to_s => old_val)
18
+ end
19
+ fields = self[field] || {}
19
20
 
20
- if new_val
21
- self[field] = (self[field] || {}).merge({flag.to_s => true.to_s})
22
- else
23
- field_flags = self[field] || {}
24
- field_flags.delete(flag.to_s)
25
- self[field] = field_flags
26
- end
27
- send("#{field}_will_change!")
28
- new_val
21
+ if new_val
22
+ self[field] = fields.merge(flag.to_s => STORED_TRUE_VALUE)
23
+ else
24
+ fields.delete(flag.to_s)
25
+ self[field] = fields
29
26
  end
27
+ new_val
30
28
  end
31
29
 
32
30
  module ClassMethods
33
31
  def hstore_flags(*args)
34
- opts = args.last.is_a?(Hash) ? args.pop.dup : {}
32
+ opts = args.extract_options!
35
33
  field = opts[:field] || "flags"
36
34
  table_field = "#{self.table_name}." + field
37
35
 
38
- serialize field, ActiveRecord::Coders::Hstore
39
-
40
36
  args.each do |flag|
41
- define_method("#{flag}") {(self[field] || {})[flag.to_s] == "true"}
42
- define_method("#{flag}?") {(self[field] || {})[flag.to_s] == "true"}
43
- define_method("not_#{flag}") {(self[field] || {})[flag.to_s] != "true"}
44
- define_method("not_#{flag}?") {(self[field] || {})[flag.to_s] != "true"}
37
+ define_method("#{flag}") {(self[field] || {})[flag.to_s] == STORED_TRUE_VALUE}
38
+ define_method("#{flag}?") {(self[field] || {})[flag.to_s] == STORED_TRUE_VALUE}
39
+ define_method("not_#{flag}") {(self[field] || {})[flag.to_s] != STORED_TRUE_VALUE}
40
+ define_method("not_#{flag}?") {(self[field] || {})[flag.to_s] != STORED_TRUE_VALUE}
45
41
  define_method("#{flag}=") {|val| set_hstore_flag_field(field, flag, val)}
46
42
 
47
43
  unless opts[:scopes] == false
48
- scope "#{flag}", where("defined(#{table_field}, '#{flag}') IS TRUE")
49
- scope "not_#{flag}", where("defined(#{table_field}, '#{flag}') IS NOT TRUE")
44
+ scope "#{flag}", -> { where("defined(#{table_field}, '#{flag}') IS TRUE") }
45
+ scope "not_#{flag}", -> { where("defined(#{table_field}, '#{flag}') IS NOT TRUE") }
50
46
 
51
47
  class_eval <<-EVAL
52
48
  def self.#{flag}_condition
metadata CHANGED
@@ -1,78 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstore_flags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Zachery Hostens
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-07 00:00:00.000000000 Z
11
+ date: 2013-10-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '3.1'
19
+ version: '4.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: '3.1'
30
- - !ruby/object:Gem::Dependency
31
- name: activerecord-postgres-hstore
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 0.7.5
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 0.7.5
26
+ version: '4.0'
46
27
  - !ruby/object:Gem::Dependency
47
28
  name: rspec
48
29
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
30
  requirements:
51
- - - ! '>='
31
+ - - '>='
52
32
  - !ruby/object:Gem::Version
53
33
  version: '0'
54
34
  type: :development
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
37
  requirements:
59
- - - ! '>='
38
+ - - '>='
60
39
  - !ruby/object:Gem::Version
61
40
  version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: pg
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
- - - ! '>='
45
+ - - '>='
68
46
  - !ruby/object:Gem::Version
69
47
  version: '0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  description:
@@ -95,32 +72,25 @@ files:
95
72
  homepage: https://github.com/infinitysw/hstore_flags
96
73
  licenses:
97
74
  - MIT
75
+ metadata: {}
98
76
  post_install_message:
99
77
  rdoc_options: []
100
78
  require_paths:
101
79
  - lib
102
80
  required_ruby_version: !ruby/object:Gem::Requirement
103
- none: false
104
81
  requirements:
105
- - - ! '>='
82
+ - - '>='
106
83
  - !ruby/object:Gem::Version
107
84
  version: '0'
108
- segments:
109
- - 0
110
- hash: 2479143759331100119
111
85
  required_rubygems_version: !ruby/object:Gem::Requirement
112
- none: false
113
86
  requirements:
114
- - - ! '>='
87
+ - - '>='
115
88
  - !ruby/object:Gem::Version
116
89
  version: '0'
117
- segments:
118
- - 0
119
- hash: 2479143759331100119
120
90
  requirements: []
121
91
  rubyforge_project:
122
- rubygems_version: 1.8.23
92
+ rubygems_version: 2.0.3
123
93
  signing_key:
124
- specification_version: 3
94
+ specification_version: 4
125
95
  summary: Store many boolean flags in an hstore column in PostgreSQL
126
96
  test_files: []