json_serialize 2.1.0 → 2.2.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.
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