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 +1 -1
- data/json_serialize.gemspec +9 -21
- data/lib/json_serialize.rb +2 -1
- metadata +72 -90
- data/.document +0 -5
- data/.rspec +0 -1
- data/Gemfile +0 -13
- data/Gemfile.lock +0 -47
- data/Rakefile +0 -38
- data/VERSION +0 -1
- data/spec/json_serialize_spec.rb +0 -54
- data/spec/spec_helper.rb +0 -23
data/README.textile
CHANGED
data/json_serialize.gemspec
CHANGED
@@ -4,40 +4,28 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "2.
|
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 =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
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 =
|
25
|
+
s.homepage = "http://github.com/riscfuture/json_serialize"
|
34
26
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version =
|
36
|
-
s.summary =
|
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
|
data/lib/json_serialize.rb
CHANGED
@@ -30,7 +30,8 @@ module JsonSerialize
|
|
30
30
|
instance_variable_get field_ivar(field)
|
31
31
|
else
|
32
32
|
encoded = read_attribute(field)
|
33
|
-
|
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
|
-
|
14
|
-
|
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: &
|
16
|
+
requirement: &2166665180 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
|
-
version_requirements: *
|
27
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *2166665180
|
25
|
+
- !ruby/object:Gem::Dependency
|
28
26
|
name: activesupport
|
29
|
-
requirement: &
|
27
|
+
requirement: &2166664700 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
35
33
|
type: :runtime
|
36
34
|
prerelease: false
|
37
|
-
version_requirements: *
|
38
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *2166664700
|
36
|
+
- !ruby/object:Gem::Dependency
|
39
37
|
name: jeweler
|
40
|
-
requirement: &
|
38
|
+
requirement: &2166664200 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
46
44
|
type: :development
|
47
45
|
prerelease: false
|
48
|
-
version_requirements: *
|
49
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
version_requirements: *2166664200
|
47
|
+
- !ruby/object:Gem::Dependency
|
50
48
|
name: yard
|
51
|
-
requirement: &
|
49
|
+
requirement: &2166663680 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version:
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
57
55
|
type: :development
|
58
56
|
prerelease: false
|
59
|
-
version_requirements: *
|
60
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
version_requirements: *2166663680
|
58
|
+
- !ruby/object:Gem::Dependency
|
61
59
|
name: RedCloth
|
62
|
-
requirement: &
|
60
|
+
requirement: &2166663200 !ruby/object:Gem::Requirement
|
63
61
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version:
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
68
66
|
type: :development
|
69
67
|
prerelease: false
|
70
|
-
version_requirements: *
|
71
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *2166663200
|
69
|
+
- !ruby/object:Gem::Dependency
|
72
70
|
name: rspec
|
73
|
-
requirement: &
|
71
|
+
requirement: &2166662620 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
79
77
|
type: :development
|
80
78
|
prerelease: false
|
81
|
-
version_requirements: *
|
82
|
-
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: *2166662620
|
80
|
+
- !ruby/object:Gem::Dependency
|
83
81
|
name: sqlite3
|
84
|
-
requirement: &
|
82
|
+
requirement: &2166662080 !ruby/object:Gem::Requirement
|
85
83
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version:
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
90
88
|
type: :development
|
91
89
|
prerelease: false
|
92
|
-
version_requirements: *
|
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
|
-
|
130
|
-
segments:
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
segments:
|
131
116
|
- 0
|
132
|
-
|
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:
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
139
124
|
requirements: []
|
140
|
-
|
141
125
|
rubyforge_project:
|
142
|
-
rubygems_version: 1.
|
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
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
|
data/spec/json_serialize_spec.rb
DELETED
@@ -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
|