hstorable 0.0.1 → 0.0.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: a56275999230cf78d65804c8e404e4ddf4e4ef47
4
- data.tar.gz: 12040b430a90ead22a84ee8953876a743bc310b6
3
+ metadata.gz: 2147ada7cb59fbcdecb31bd32ec1d2b1cf6913ef
4
+ data.tar.gz: 5a3dcc28952e3dd900e03f5051ea64e0c026273c
5
5
  SHA512:
6
- metadata.gz: 42aa471017da9eab2d6ee97e1a0c0917e2e1084c9dddeeb7e6ab52b8cca1f6e70504f56abd43f24a80376a896290afa283785cd3933b48878a71ab3578b40b78
7
- data.tar.gz: 867818f823c55fd8fd968af10a988df9fcdfdcbec66aec41470dc11e1a72ca390fe6f3ee2bba3b7c59e85a9a440ef24175a6544213676b69cf5e295b511a942e
6
+ metadata.gz: a9228e6b9a0a4a7ec83550124dfe36327b719736c4d6351facafbf0a08fe4042044c66590f342dff9e242f40f25d7659bc5a4b3f70c7e1a5e37d8caa48c81b68
7
+ data.tar.gz: 54f35e078b97ad89ae38cedc98aa5568f866dd0d97828a2a6812a7f5c1c6ac9a0228c7bfadf9031977de0ce93be30602e92410d93faaed927e6143513d823480
data/hstorable.gemspec CHANGED
@@ -19,5 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.3.2"
23
+
24
+ spec.add_runtime_dependency "pg", "0.17.1"
23
25
  end
@@ -0,0 +1,23 @@
1
+ module Hstorable
2
+ module Base
3
+ def hstore_register_field(name, options)
4
+ @hstore_fields ||= []
5
+ @hstore_fields << { name: name }.merge(options)
6
+ end
7
+
8
+ def hstore_field_names
9
+ @hstore_fields ||= []
10
+ @hstore_fields.map { |field| field[:name] }
11
+ end
12
+
13
+ def hstore_readonly_field?(name)
14
+ options = hstore_options_for_field(name)
15
+ options && options[:readonly]
16
+ end
17
+
18
+ def hstore_options_for_field(name)
19
+ @hstore_fields ||= []
20
+ @hstore_fields.find { |field| field[:name] == name }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ module Hstorable
2
+ module ModelFields
3
+ def hstore_model(options)
4
+ raise 'This feature is not implemented yet'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ module Hstorable
2
+ module SimpleFields
3
+ def hstore_simple(field, options)
4
+ name = options[:name]
5
+ default = options[:default]
6
+
7
+ define_method "#{name}" do
8
+ hstore = self.send(field)
9
+ value = hstore[name]
10
+ value ? value : default
11
+ end
12
+
13
+ define_method "#{name}=" do |value|
14
+ hstore = self.send(field)
15
+ self.send("#{field}_will_change!") if hstore[name] != value
16
+ hstore[name] = value
17
+ hstore[name]
18
+ end
19
+
20
+ hstore_register_field(name, options)
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Hstorable
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/hstorable.rb CHANGED
@@ -1,52 +1,9 @@
1
- require "hstorable/version"
1
+ require 'hstorable/model'
2
2
 
3
3
  module Hstorable
4
- def hstore_register_field(name, options)
5
- @hstore_fields ||= []
6
- @hstore_fields << { name: name }.merge(options)
7
- end
8
-
9
- def hstore_field_names
10
- @hstore_fields.map { |field| field[:name] }
11
- end
12
-
13
- def hstore_readonly_field?(name)
14
- options = hstore_options_for_field(name)
15
- options && options[:readonly]
16
- end
17
-
18
- def hstore_options_for_field(name)
19
- @hstore_fields.find { |field| field[:name] == name }
20
- end
21
-
22
- def hstore_simple(field, options)
23
- name = options[:name]
24
- default = options[:default]
25
-
26
- define_method "#{name}" do
27
- hstore = self.send(field)
28
- value = hstore[name]
29
- value ? value : default
30
- end
31
-
32
- define_method "#{name}=" do |value|
33
- hstore = self.send(field)
34
- self.send("#{field}_will_change!") if hstore[name] != value
35
- hstore[name] = value
36
- hstore[name]
37
- end
38
-
39
- hstore_register_field(name, options)
40
- end
41
-
42
- def hstore_model(options)
43
- # TODO Implement handling of model dependencies here
44
- end
45
-
46
- def hstore(type, field, options)
47
- case type
48
- when :simple then hstore_simple(field, options)
49
- when :model then hstore_model(field, options)
50
- end
4
+ def self.included(base)
5
+ base.extend Hstorable::Base
6
+ base.extend Hstorable::SimpleFields
7
+ base.extend Hstorable::ModelFields
51
8
  end
52
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstorable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Tsvetkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-01 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,30 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.3.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 10.3.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pg
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.17.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: '0'
54
+ version: 0.17.1
41
55
  description: This gem simplifies working wih fields stored using Hstore
42
56
  email:
43
57
  - sergey.a.tsvetkov@gmail.com
@@ -52,6 +66,9 @@ files:
52
66
  - Rakefile
53
67
  - hstorable.gemspec
54
68
  - lib/hstorable.rb
69
+ - lib/hstorable/base.rb
70
+ - lib/hstorable/model_fields.rb
71
+ - lib/hstorable/simple_fields.rb
55
72
  - lib/hstorable/version.rb
56
73
  homepage: http://hstorable.kimrgrey.org/
57
74
  licenses: