json_serialize 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -1,7 +1,7 @@
1
1
  h1. json_serialize -- JSON serialization in ActiveRecord
2
2
 
3
3
  | *Author* | Tim Morgan |
4
- | *Version* | 2.1 (Apr 4, 2011) |
4
+ | *Version* | 2.2 (Sep 15, 2011) |
5
5
  | *License* | Released under the MIT license. |
6
6
 
7
7
  h2. About
@@ -4,40 +4,28 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{json_serialize}
8
- s.version = "2.1.0"
7
+ s.name = "json_serialize"
8
+ s.version = "2.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tim Morgan"]
12
- s.date = %q{2011-04-04}
13
- s.description = %q{Adds to ActiveRecord the ability to JSON-serialize certain fields.}
14
- s.email = %q{git@timothymorgan.info}
12
+ s.date = "2011-09-15"
13
+ s.description = "Adds to ActiveRecord the ability to JSON-serialize certain fields."
14
+ s.email = "git@timothymorgan.info"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.textile"
18
18
  ]
19
19
  s.files = [
20
- ".document",
21
- ".rspec",
22
- "Gemfile",
23
- "Gemfile.lock",
24
20
  "LICENSE",
25
21
  "README.textile",
26
- "Rakefile",
27
- "VERSION",
28
22
  "json_serialize.gemspec",
29
- "lib/json_serialize.rb",
30
- "spec/json_serialize_spec.rb",
31
- "spec/spec_helper.rb"
23
+ "lib/json_serialize.rb"
32
24
  ]
33
- s.homepage = %q{http://github.com/riscfuture/json_serialize}
25
+ s.homepage = "http://github.com/riscfuture/json_serialize"
34
26
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.6.2}
36
- s.summary = %q{Adds JSON serialization to ActiveRecord models}
37
- s.test_files = [
38
- "spec/json_serialize_spec.rb",
39
- "spec/spec_helper.rb"
40
- ]
27
+ s.rubygems_version = "1.8.10"
28
+ s.summary = "Adds JSON serialization to ActiveRecord models"
41
29
 
42
30
  if s.respond_to? :specification_version then
43
31
  s.specification_version = 3
@@ -30,7 +30,8 @@ module JsonSerialize
30
30
  instance_variable_get field_ivar(field)
31
31
  else
32
32
  encoded = read_attribute(field)
33
- decoded = encoded.nil? ? default_value : ActiveSupport::JSON.decode(encoded)
33
+ default = default_value.kind_of?(Proc) ? default_value.call : (default_value.duplicable? ? default_value.dup : default_value)
34
+ decoded = encoded.nil? ? default : ActiveSupport::JSON.decode(encoded)
34
35
  instance_variable_set field_ivar(field), decoded
35
36
  decoded
36
37
  end
metadata CHANGED
@@ -1,148 +1,130 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: json_serialize
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.0
4
5
  prerelease:
5
- version: 2.1.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Tim Morgan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-04 00:00:00 -07:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activerecord
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2166665180 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "3.0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *2166665180
25
+ - !ruby/object:Gem::Dependency
28
26
  name: activesupport
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &2166664700 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "3.0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
35
33
  type: :runtime
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *2166664700
36
+ - !ruby/object:Gem::Dependency
39
37
  name: jeweler
40
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &2166664200 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
45
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *2166664200
47
+ - !ruby/object:Gem::Dependency
50
48
  name: yard
51
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &2166663680 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
57
55
  type: :development
58
56
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *2166663680
58
+ - !ruby/object:Gem::Dependency
61
59
  name: RedCloth
62
- requirement: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &2166663200 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :development
69
67
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *2166663200
69
+ - !ruby/object:Gem::Dependency
72
70
  name: rspec
73
- requirement: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &2166662620 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :development
80
78
  prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
79
+ version_requirements: *2166662620
80
+ - !ruby/object:Gem::Dependency
83
81
  name: sqlite3
84
- requirement: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &2166662080 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
90
88
  type: :development
91
89
  prerelease: false
92
- version_requirements: *id007
90
+ version_requirements: *2166662080
93
91
  description: Adds to ActiveRecord the ability to JSON-serialize certain fields.
94
92
  email: git@timothymorgan.info
95
93
  executables: []
96
-
97
94
  extensions: []
98
-
99
- extra_rdoc_files:
95
+ extra_rdoc_files:
100
96
  - LICENSE
101
97
  - README.textile
102
- files:
103
- - .document
104
- - .rspec
105
- - Gemfile
106
- - Gemfile.lock
98
+ files:
107
99
  - LICENSE
108
100
  - README.textile
109
- - Rakefile
110
- - VERSION
111
101
  - json_serialize.gemspec
112
102
  - lib/json_serialize.rb
113
- - spec/json_serialize_spec.rb
114
- - spec/spec_helper.rb
115
- has_rdoc: true
116
103
  homepage: http://github.com/riscfuture/json_serialize
117
104
  licenses: []
118
-
119
105
  post_install_message:
120
106
  rdoc_options: []
121
-
122
- require_paths:
107
+ require_paths:
123
108
  - lib
124
- required_ruby_version: !ruby/object:Gem::Requirement
109
+ required_ruby_version: !ruby/object:Gem::Requirement
125
110
  none: false
126
- requirements:
127
- - - ">="
128
- - !ruby/object:Gem::Version
129
- hash: 4158012258004995923
130
- segments:
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ segments:
131
116
  - 0
132
- version: "0"
133
- required_rubygems_version: !ruby/object:Gem::Requirement
117
+ hash: 680352968988499889
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
119
  none: false
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: "0"
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
139
124
  requirements: []
140
-
141
125
  rubyforge_project:
142
- rubygems_version: 1.6.2
126
+ rubygems_version: 1.8.10
143
127
  signing_key:
144
128
  specification_version: 3
145
129
  summary: Adds JSON serialization to ActiveRecord models
146
- test_files:
147
- - spec/json_serialize_spec.rb
148
- - spec/spec_helper.rb
130
+ test_files: []
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.rspec DELETED
@@ -1 +0,0 @@
1
- -cfs
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- # DEPENDENCIES
4
- gem 'activerecord', '>= 3.0', require: 'active_record'
5
- gem 'activesupport', '>= 3.0', require: 'active_support/core_ext/object/try'
6
-
7
- group :development do
8
- gem 'jeweler'
9
- gem 'yard'
10
- gem 'RedCloth', require: 'redcloth'
11
- gem 'rspec'
12
- gem 'sqlite3'
13
- end
data/Gemfile.lock DELETED
@@ -1,47 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- RedCloth (4.2.7)
5
- activemodel (3.0.5)
6
- activesupport (= 3.0.5)
7
- builder (~> 2.1.2)
8
- i18n (~> 0.4)
9
- activerecord (3.0.5)
10
- activemodel (= 3.0.5)
11
- activesupport (= 3.0.5)
12
- arel (~> 2.0.2)
13
- tzinfo (~> 0.3.23)
14
- activesupport (3.0.5)
15
- arel (2.0.9)
16
- builder (2.1.2)
17
- diff-lcs (1.1.2)
18
- git (1.2.5)
19
- i18n (0.5.0)
20
- jeweler (1.5.2)
21
- bundler (~> 1.0.0)
22
- git (>= 1.2.5)
23
- rake
24
- rake (0.8.7)
25
- rspec (2.5.0)
26
- rspec-core (~> 2.5.0)
27
- rspec-expectations (~> 2.5.0)
28
- rspec-mocks (~> 2.5.0)
29
- rspec-core (2.5.1)
30
- rspec-expectations (2.5.0)
31
- diff-lcs (~> 1.1.2)
32
- rspec-mocks (2.5.0)
33
- sqlite3 (1.3.3)
34
- tzinfo (0.3.26)
35
- yard (0.6.5)
36
-
37
- PLATFORMS
38
- ruby
39
-
40
- DEPENDENCIES
41
- RedCloth
42
- activerecord (>= 3.0)
43
- activesupport (>= 3.0)
44
- jeweler
45
- rspec
46
- sqlite3
47
- yard
data/Rakefile DELETED
@@ -1,38 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'rake'
11
-
12
- require 'jeweler'
13
- Jeweler::Tasks.new do |gem|
14
- gem.name = "json_serialize"
15
- gem.summary = %Q{Adds JSON serialization to ActiveRecord models}
16
- gem.description = %Q{Adds to ActiveRecord the ability to JSON-serialize certain fields.}
17
- gem.email = "git@timothymorgan.info"
18
- gem.homepage = "http://github.com/riscfuture/json_serialize"
19
- gem.authors = [ "Tim Morgan" ]
20
- end
21
- Jeweler::RubygemsDotOrgTasks.new
22
-
23
- require 'rspec/core/rake_task'
24
- RSpec::Core::RakeTask.new
25
-
26
- require 'yard'
27
- YARD::Rake::YardocTask.new('doc') do |doc|
28
- doc.options << "-m" << "textile"
29
- doc.options << "--protected"
30
- doc.options << "--no-private"
31
- doc.options << "-r" << "README.textile"
32
- doc.options << "-o" << "doc"
33
- doc.options << "--title" << "json_serialize Documentation".inspect
34
-
35
- doc.files = [ 'lib/**/*', 'README.textile' ]
36
- end
37
-
38
- task(default: :spec)
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 2.1.0
@@ -1,54 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe JsonSerialize do
4
- describe "#json_serialize" do
5
- context "[getter]" do
6
- it "should JSON-decode the value" do
7
- require 'logger'
8
- object = Json.create!
9
- Json.update_all(data: '{"foo":"bar"}')
10
- object.reload.data.should eql('foo' => 'bar')
11
- end
12
-
13
- it "should return nil if the value is nil" do
14
- object = Json.create!
15
- Json.update_all(data: nil)
16
- object.reload.data.should be_nil
17
- end
18
-
19
- it "should return a default value if the value is nil and a default is set" do
20
- object = Json.create!
21
- Json.update_all(default: nil)
22
- object.reload.default.should eql("default value")
23
- end
24
- end
25
-
26
- context "[setter]" do
27
- it "should JSON-encode the value" do
28
- object = Json.create!(data: { foo: 'bar' })
29
- object.send(:read_attribute, :data).should eql({ foo: 'bar' }.to_json)
30
- end
31
-
32
- it "should leave nil as nil" do
33
- object = Json.create!(data: nil)
34
- object.send(:read_attribute, :data).should be_nil
35
- end
36
- end
37
-
38
- context "[database backing]" do
39
- it "should back the instance object with the database" do
40
- object = Json.create!(data: { foo: 'bar' })
41
- object.data[:foo2] = 'bar2'
42
- object.save!
43
- object.data.should eql('foo' => 'bar', 'foo2' => 'bar2')
44
- end
45
-
46
- it "should clear the in-memory reference on reload" do
47
- object = Json.create!(data: { foo: 'bar' })
48
- object.data[:foo2] = 'bar2'
49
- object.reload
50
- object.data.should eql('foo' => 'bar')
51
- end
52
- end
53
- end
54
- end
data/spec/spec_helper.rb DELETED
@@ -1,23 +0,0 @@
1
- Bundler.require :default, :test
2
-
3
- $LOAD_PATH.unshift(File.dirname(__FILE__))
4
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
-
6
- require 'json_serialize'
7
-
8
- ActiveRecord::Base.establish_connection(
9
- adapter: 'sqlite3',
10
- database: 'test.sqlite'
11
- )
12
-
13
- class Json < ActiveRecord::Base
14
- include JsonSerialize
15
- json_serialize :data, default: "default value"
16
- end
17
-
18
- RSpec.configure do |config|
19
- config.before(:each) do
20
- Json.connection.execute "DROP TABLE IF EXISTS jsons"
21
- Json.connection.execute "CREATE TABLE jsons (id INTEGER PRIMARY KEY ASC, data TEXT, 'default' TEXT)"
22
- end
23
- end