hstore_flags 0.2.0 → 0.3.0

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