json_record 1.1.0.b6 → 1.1.1
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/Rakefile +15 -12
- data/lib/json_record.rb +14 -8
- data/lib/json_record/attribute_methods.rb +1 -1
- data/lib/json_record/embedded_document.rb +10 -2
- data/lib/json_record/field_definition.rb +9 -1
- data/lib/json_record/json_field.rb +4 -2
- data/lib/json_record/serialized.rb +9 -5
- data/spec/serialized_spec.rb +20 -2
- data/spec/spec_helper.rb +5 -4
- data/spec/test_models.rb +11 -9
- metadata +21 -31
- data/CHANGE_LOG +0 -28
- data/VERSION +0 -1
- data/init.rb +0 -1
- data/json_record.gemspec +0 -73
data/Rakefile
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
-
require '
|
3
|
+
require 'rdoc/task'
|
4
4
|
|
5
5
|
desc 'Default: run unit tests.'
|
6
6
|
task :default => :test
|
7
7
|
|
8
8
|
begin
|
9
|
-
require '
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
9
|
+
require 'rspec'
|
10
|
+
require 'rspec/core/rake_task'
|
11
|
+
desc 'Run the unit tests'
|
12
|
+
RSpec::Core::RakeTask.new(:test)
|
14
13
|
rescue LoadError
|
15
|
-
|
16
|
-
STDERR.puts "You must have rspec
|
14
|
+
task :test do
|
15
|
+
STDERR.puts "You must have rspec 2.0 installed to run the tests"
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
20
|
-
desc 'Generate documentation
|
19
|
+
desc 'Generate rdoc documentation'
|
21
20
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
22
21
|
rdoc.rdoc_dir = 'rdoc'
|
23
22
|
rdoc.options << '--title' << 'JSON Record' << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc'
|
@@ -33,12 +32,16 @@ begin
|
|
33
32
|
gem.email = "brian@embellishedvisions.com"
|
34
33
|
gem.homepage = "http://github.com/bdurand/json_record"
|
35
34
|
gem.authors = ["Brian Durand"]
|
35
|
+
gem.files = FileList["lib/**/*", "spec/**/*", "README.rdoc", "Rakefile", "MIT_LICENSE"].to_a
|
36
|
+
gem.has_rdoc = true
|
37
|
+
gem.extra_rdoc_files = ["README.rdoc", "MIT_LICENSE"]
|
38
|
+
gem.rdoc_options = ["--charset=UTF-8", "--main", "README.rdoc"]
|
36
39
|
|
37
|
-
gem.add_dependency('activerecord', '>= 3.0.0
|
38
|
-
gem.add_development_dependency('rspec', '>=
|
40
|
+
gem.add_dependency('activerecord', '>= 3.0.0')
|
41
|
+
gem.add_development_dependency('rspec', '>=2.0.0')
|
39
42
|
gem.add_development_dependency('jeweler')
|
40
43
|
end
|
41
44
|
|
42
45
|
Jeweler::GemcutterTasks.new
|
43
46
|
rescue LoadError
|
44
|
-
end
|
47
|
+
end
|
data/lib/json_record.rb
CHANGED
@@ -1,18 +1,24 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
|
+
unless defined?(Yajl) || defined?(JSON)
|
4
|
+
if ActiveRecord::Base.logger
|
5
|
+
ActiveRecord::Base.logger.warn("*** You really should install the json or yajl gem for optimal performance with json_record ***")
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
3
9
|
unless defined?(Boolean)
|
4
10
|
class Boolean
|
5
11
|
end
|
6
12
|
end
|
7
13
|
|
8
14
|
module JsonRecord
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :Serialized, File.expand_path(
|
15
|
+
autoload :AttributeMethods, File.expand_path("../json_record/attribute_methods.rb", __FILE__)
|
16
|
+
autoload :EmbeddedDocument, File.expand_path("../json_record/embedded_document.rb", __FILE__)
|
17
|
+
autoload :EmbeddedDocumentArray, File.expand_path("../json_record/embedded_document_array.rb", __FILE__)
|
18
|
+
autoload :FieldDefinition, File.expand_path("../json_record/field_definition.rb", __FILE__)
|
19
|
+
autoload :JsonField, File.expand_path("../json_record/json_field.rb", __FILE__)
|
20
|
+
autoload :Schema, File.expand_path("../json_record/schema.rb", __FILE__)
|
21
|
+
autoload :Serialized, File.expand_path("../json_record/serialized.rb", __FILE__)
|
16
22
|
end
|
17
23
|
|
18
|
-
ActiveRecord::Base.send(:include, JsonRecord::Serialized)
|
24
|
+
ActiveRecord::Base.send(:include, JsonRecord::Serialized)
|
@@ -37,7 +37,7 @@ module JsonRecord
|
|
37
37
|
if changes.include?(field.name)
|
38
38
|
changes.delete(field.name) if converted_value == changes[field.name]
|
39
39
|
else
|
40
|
-
old_value = (old_value.clone rescue old_value) unless old_value.nil?
|
40
|
+
old_value = (old_value.clone rescue old_value) unless old_value.nil? || old_value.is_a?(Numeric) || old_value.is_a?(Symbol) || old_value.is_a?(TrueClass) || old_value.is_a?(FalseClass)
|
41
41
|
changes[field.name] = old_value
|
42
42
|
end
|
43
43
|
end
|
@@ -16,8 +16,8 @@ module JsonRecord
|
|
16
16
|
base.alias_method_chain(:valid?, :callbacks)
|
17
17
|
base.extend ValidationCallbacks
|
18
18
|
|
19
|
-
base.
|
20
|
-
base.
|
19
|
+
base.class_attribute :schema
|
20
|
+
base.schema = Schema.new(base, nil)
|
21
21
|
end
|
22
22
|
|
23
23
|
module ValidationCallbacks #:nodoc:
|
@@ -79,6 +79,10 @@ module JsonRecord
|
|
79
79
|
@json_attributes.to_json(*args)
|
80
80
|
end
|
81
81
|
|
82
|
+
def to_hash
|
83
|
+
@json_attributes
|
84
|
+
end
|
85
|
+
|
82
86
|
def eql? (val)
|
83
87
|
val.class == self.class && val.attributes == attributes && val.parent == parent
|
84
88
|
end
|
@@ -87,6 +91,10 @@ module JsonRecord
|
|
87
91
|
eql?(val)
|
88
92
|
end
|
89
93
|
|
94
|
+
def equal? (val)
|
95
|
+
eql?(val)
|
96
|
+
end
|
97
|
+
|
90
98
|
def hash
|
91
99
|
attributes.hash + parent.hash
|
92
100
|
end
|
@@ -22,7 +22,13 @@ module JsonRecord
|
|
22
22
|
|
23
23
|
# Get the default value.
|
24
24
|
def default
|
25
|
-
|
25
|
+
if @default.nil?
|
26
|
+
nil
|
27
|
+
elsif @default.is_a?(Numeric) || @default.is_a?(Symbol) || @default.is_a?(TrueClass) || @default.is_a?(FalseClass)
|
28
|
+
@default
|
29
|
+
else
|
30
|
+
@default.dup rescue @default
|
31
|
+
end
|
26
32
|
end
|
27
33
|
|
28
34
|
# Indicates the field is multivalued.
|
@@ -72,6 +78,8 @@ module JsonRecord
|
|
72
78
|
elsif @type == Hash
|
73
79
|
raise ArgumentError.new("#{name} must be a Hash") unless val.is_a?(Hash)
|
74
80
|
return val
|
81
|
+
elsif @type == BigDecimal
|
82
|
+
return BigDecimal.new(val.to_s)
|
75
83
|
else
|
76
84
|
if val.is_a?(@type)
|
77
85
|
val
|
@@ -6,10 +6,12 @@ module JsonRecord
|
|
6
6
|
|
7
7
|
def initialize (record, name, schemas)
|
8
8
|
@record = record
|
9
|
-
@name = name
|
9
|
+
@name = name.to_s
|
10
10
|
@schemas = schemas
|
11
11
|
@attributes = nil
|
12
|
-
|
12
|
+
json_column = record.class.columns_hash[@name]
|
13
|
+
raise ArgumentError.new("column #{name} does not exist in #{table_name}") unless json_column
|
14
|
+
@compressed = json_column.type == :binary
|
13
15
|
end
|
14
16
|
|
15
17
|
def serialize
|
@@ -11,16 +11,16 @@ module JsonRecord
|
|
11
11
|
# can have multiple fields that store JSON documents if necessary.
|
12
12
|
def serialize_to_json (field_name, &block)
|
13
13
|
unless include?(InstanceMethods)
|
14
|
-
|
14
|
+
class_attribute :json_serialized_fields
|
15
15
|
extend ClassMethods
|
16
16
|
include InstanceMethods
|
17
17
|
end
|
18
18
|
field_name = field_name.to_s
|
19
|
-
self.json_serialized_fields
|
19
|
+
self.json_serialized_fields = json_serialized_fields ? json_serialized_fields.clone : {}
|
20
20
|
schema = Schema.new(self, field_name)
|
21
21
|
field_schemas = json_serialized_fields[field_name]
|
22
22
|
if field_schemas
|
23
|
-
field_schemas = field_schemas.
|
23
|
+
field_schemas = field_schemas.clone
|
24
24
|
else
|
25
25
|
field_schemas = []
|
26
26
|
end
|
@@ -55,6 +55,10 @@ module JsonRecord
|
|
55
55
|
base.alias_method_chain :write_attribute, :serialized_json
|
56
56
|
base.alias_method_chain :read_attribute_before_type_cast, :serialized_json
|
57
57
|
base.alias_method_chain :attributes_before_type_cast, :serialized_json
|
58
|
+
# Alias method chain doesn't work on [] methods and these are aliased directly in Rails 3.1
|
59
|
+
base.send :alias_method, :[], :read_attribute_with_serialized_json
|
60
|
+
base.send :alias_method, :[]=, :write_attribute_with_serialized_json
|
61
|
+
base.send :public, :[], :[]=
|
58
62
|
end
|
59
63
|
|
60
64
|
# Get the JsonField objects for the record.
|
@@ -93,6 +97,8 @@ module JsonRecord
|
|
93
97
|
json_attributes_before_type_cast.merge(attributes_before_type_cast_without_serialized_json)
|
94
98
|
end
|
95
99
|
|
100
|
+
protected
|
101
|
+
|
96
102
|
def read_attribute_with_serialized_json (name)
|
97
103
|
name = name.to_s
|
98
104
|
json_field, field_definition = self.class.json_field_definition(name)
|
@@ -113,8 +119,6 @@ module JsonRecord
|
|
113
119
|
end
|
114
120
|
end
|
115
121
|
|
116
|
-
protected
|
117
|
-
|
118
122
|
# Returns a hash of all the JsonField objects merged together.
|
119
123
|
def json_attributes
|
120
124
|
attrs = {}
|
data/spec/serialized_spec.rb
CHANGED
@@ -94,6 +94,12 @@ describe JsonRecord::Serialized do
|
|
94
94
|
model.strings.should == ["a", "b"]
|
95
95
|
end
|
96
96
|
|
97
|
+
it "should convert values to BigDecimal" do
|
98
|
+
model = JsonRecord::Test::Model.new
|
99
|
+
model.price = '5.55'
|
100
|
+
model.price.should == BigDecimal.new('5.55')
|
101
|
+
end
|
102
|
+
|
97
103
|
it "should convert a hash to an embedded document" do
|
98
104
|
model = JsonRecord::Test::Model.new
|
99
105
|
model.primary_trait = {:name => "thing", :value => "stuff"}
|
@@ -142,9 +148,12 @@ describe JsonRecord::Serialized do
|
|
142
148
|
end
|
143
149
|
|
144
150
|
it "should initialize json attributes with blank values" do
|
145
|
-
JsonRecord::Test::Model.new.attributes
|
151
|
+
json_attributes = JsonRecord::Test::Model.new.attributes
|
152
|
+
json_attributes.delete('id').should == nil
|
153
|
+
json_attributes.should == {
|
146
154
|
"name"=>nil,
|
147
155
|
"price"=>nil,
|
156
|
+
"ratio"=>nil,
|
148
157
|
"string_field"=>nil,
|
149
158
|
"verified_at"=>nil,
|
150
159
|
"viewed_at"=>nil,
|
@@ -154,6 +163,7 @@ describe JsonRecord::Serialized do
|
|
154
163
|
"field_4"=>nil,
|
155
164
|
"field_5"=>nil,
|
156
165
|
"unit_price"=>nil,
|
166
|
+
"unit_ratio"=>nil,
|
157
167
|
"traits"=>[],
|
158
168
|
"value"=>0,
|
159
169
|
"strings"=>[],
|
@@ -194,7 +204,7 @@ describe JsonRecord::Serialized do
|
|
194
204
|
|
195
205
|
it "should reserialize json attributes into a JSON field" do
|
196
206
|
model = JsonRecord::Test::Model.new(:name => "test name", :value => 1)
|
197
|
-
model.save!
|
207
|
+
model.save! rescue puts $@.join("\n")
|
198
208
|
model = JsonRecord::Test::Model.find(model.id)
|
199
209
|
ActiveSupport::JSON.decode(model.json).should == {"name" => "test name", "value" => 1}
|
200
210
|
model.value = 2
|
@@ -479,4 +489,12 @@ describe JsonRecord::Serialized do
|
|
479
489
|
model.unit_price = 1.2253
|
480
490
|
model.unit_price.should == 1.23
|
481
491
|
end
|
492
|
+
|
493
|
+
it "should blow up if the json column doesn't exist" do
|
494
|
+
lambda{JsonRecord::Test::Broken.new(:name => "Test", :value => "Moo")}.should raise_error
|
495
|
+
end
|
496
|
+
|
497
|
+
it "should blow up if trying to set a json attribute hasn't been defined" do
|
498
|
+
lambda{model = JsonRecord::Test::Model.new(:undefined_attribute => "what?")}.should raise_error
|
499
|
+
end
|
482
500
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
active_record_version = ENV["ACTIVE_RECORD_VERSION"] || [">=
|
3
|
+
active_record_version = ENV["ACTIVE_RECORD_VERSION"] || [">=3.0.0"]
|
4
4
|
active_record_version = [active_record_version] unless active_record_version.is_a?(Array)
|
5
5
|
gem 'activerecord', *active_record_version
|
6
6
|
|
7
|
-
require 'spec'
|
8
7
|
require 'active_record'
|
9
8
|
puts "Testing Against ActiveRecord #{ActiveRecord::VERSION::STRING}"
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
ActiveRecord::Base.establish_connection("adapter" => "sqlite3", "database" => ":memory:")
|
11
|
+
|
12
|
+
require File.expand_path("../../lib/json_record.rb", __FILE__)
|
13
|
+
require File.expand_path("../test_models.rb", __FILE__)
|
data/spec/test_models.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
module JsonRecord
|
2
2
|
module Test
|
3
3
|
def self.create_tables
|
4
|
-
db_dir = File.expand_path(File.join(__FILE__, '..', 'tmp'))
|
5
|
-
Dir.mkdir(db_dir) unless File.exist?(db_dir)
|
6
|
-
db = File.join(db_dir, 'test_JsonRecord.sqlite3')
|
7
|
-
Model.establish_connection("adapter" => "sqlite3", "database" => db)
|
8
|
-
|
9
4
|
Model.connection.create_table(:models) do |t|
|
10
5
|
t.text :json
|
11
6
|
t.binary :compressed_json
|
@@ -20,11 +15,7 @@ module JsonRecord
|
|
20
15
|
end
|
21
16
|
|
22
17
|
def self.drop_tables
|
23
|
-
db_dir = File.expand_path(File.join(__FILE__, '..', 'tmp'))
|
24
|
-
db = File.join(db_dir, 'test_JsonRecord.sqlite3')
|
25
18
|
Model.connection.disconnect!
|
26
|
-
File.delete(db) if File.exist?(db)
|
27
|
-
Dir.delete(db_dir) if File.exist?(db_dir) and Dir.entries(db_dir).reject{|f| f.match(/^\.+$/)}.empty?
|
28
19
|
end
|
29
20
|
|
30
21
|
class Trait
|
@@ -59,6 +50,7 @@ module JsonRecord
|
|
59
50
|
schema.key :name, String, :required => true, :length => 15
|
60
51
|
schema.key :value, Integer, :default => 0
|
61
52
|
schema.key :price, Float
|
53
|
+
schema.key :ratio, BigDecimal
|
62
54
|
schema.key :verified, Boolean
|
63
55
|
schema.key :when, Date
|
64
56
|
schema.key :verified_at, Time
|
@@ -77,6 +69,7 @@ module JsonRecord
|
|
77
69
|
schema.key :field_4, :length => (4..15)
|
78
70
|
schema.key :field_5, :length => {:minimum => 5}
|
79
71
|
schema.key :unit_price, Float
|
72
|
+
schema.key :unit_ratio, BigDecimal
|
80
73
|
end
|
81
74
|
|
82
75
|
def unit_price
|
@@ -97,5 +90,14 @@ module JsonRecord
|
|
97
90
|
schema.key :another_field
|
98
91
|
end
|
99
92
|
end
|
93
|
+
|
94
|
+
class Broken < ActiveRecord::Base
|
95
|
+
set_table_name :models
|
96
|
+
|
97
|
+
serialize_to_json(:no_such_column) do |schema|
|
98
|
+
schema.key :name, String
|
99
|
+
schema.key :value, String
|
100
|
+
end
|
101
|
+
end
|
100
102
|
end
|
101
103
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
|
11
|
-
version: 1.1.0.b6
|
9
|
+
- 1
|
10
|
+
version: 1.1.1
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Brian Durand
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date:
|
18
|
+
date: 2011-07-07 00:00:00 -05:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -27,13 +26,12 @@ dependencies:
|
|
27
26
|
requirements:
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
hash:
|
29
|
+
hash: 7
|
31
30
|
segments:
|
32
31
|
- 3
|
33
32
|
- 0
|
34
33
|
- 0
|
35
|
-
|
36
|
-
version: 3.0.0.beta2
|
34
|
+
version: 3.0.0
|
37
35
|
type: :runtime
|
38
36
|
version_requirements: *id001
|
39
37
|
- !ruby/object:Gem::Dependency
|
@@ -44,12 +42,12 @@ dependencies:
|
|
44
42
|
requirements:
|
45
43
|
- - ">="
|
46
44
|
- !ruby/object:Gem::Version
|
47
|
-
hash:
|
45
|
+
hash: 15
|
48
46
|
segments:
|
49
|
-
-
|
50
|
-
- 3
|
47
|
+
- 2
|
51
48
|
- 0
|
52
|
-
|
49
|
+
- 0
|
50
|
+
version: 2.0.0
|
53
51
|
type: :development
|
54
52
|
version_requirements: *id002
|
55
53
|
- !ruby/object:Gem::Dependency
|
@@ -73,15 +71,12 @@ executables: []
|
|
73
71
|
extensions: []
|
74
72
|
|
75
73
|
extra_rdoc_files:
|
74
|
+
- MIT_LICENSE
|
76
75
|
- README.rdoc
|
77
76
|
files:
|
78
|
-
- CHANGE_LOG
|
79
77
|
- MIT_LICENSE
|
80
78
|
- README.rdoc
|
81
79
|
- Rakefile
|
82
|
-
- VERSION
|
83
|
-
- init.rb
|
84
|
-
- json_record.gemspec
|
85
80
|
- lib/json_record.rb
|
86
81
|
- lib/json_record/attribute_methods.rb
|
87
82
|
- lib/json_record/embedded_document.rb
|
@@ -103,6 +98,8 @@ licenses: []
|
|
103
98
|
post_install_message:
|
104
99
|
rdoc_options:
|
105
100
|
- --charset=UTF-8
|
101
|
+
- --main
|
102
|
+
- README.rdoc
|
106
103
|
require_paths:
|
107
104
|
- lib
|
108
105
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -117,25 +114,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
115
|
none: false
|
119
116
|
requirements:
|
120
|
-
- - "
|
117
|
+
- - ">="
|
121
118
|
- !ruby/object:Gem::Version
|
122
|
-
hash:
|
119
|
+
hash: 3
|
123
120
|
segments:
|
124
|
-
-
|
125
|
-
|
126
|
-
- 1
|
127
|
-
version: 1.3.1
|
121
|
+
- 0
|
122
|
+
version: "0"
|
128
123
|
requirements: []
|
129
124
|
|
130
125
|
rubyforge_project:
|
131
|
-
rubygems_version: 1.
|
126
|
+
rubygems_version: 1.5.2
|
132
127
|
signing_key:
|
133
128
|
specification_version: 3
|
134
129
|
summary: ActiveRecord support for mapping complex documents in a single RDBMS row via JSON serialization.
|
135
|
-
test_files:
|
136
|
-
|
137
|
-
- spec/embedded_document_spec.rb
|
138
|
-
- spec/field_definition_spec.rb
|
139
|
-
- spec/serialized_spec.rb
|
140
|
-
- spec/spec_helper.rb
|
141
|
-
- spec/test_models.rb
|
130
|
+
test_files: []
|
131
|
+
|
data/CHANGE_LOG
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
1.0.0
|
2
|
-
- Initial release
|
3
|
-
|
4
|
-
1.0.1
|
5
|
-
- Fixed bug where embedded documents couldn't reference the schema until a field was defined
|
6
|
-
|
7
|
-
1.0.2
|
8
|
-
- Changed EmbeddedDocument to be a module instead of a class to fix inheritance problem with validations
|
9
|
-
- Remove key and many methods from EmbeddedDocument in favor of always calling the schema
|
10
|
-
|
11
|
-
1.0.3
|
12
|
-
- Added before and after validation callbacks on EmbeddedDocument
|
13
|
-
- Fixed bug where fields couldn't be set to false
|
14
|
-
|
15
|
-
1.0.4
|
16
|
-
- Fixed bug with tracking changes when initializing an EmbeddedDocument.
|
17
|
-
- Removed tracking changes of keys that are EmbeddedDocuments
|
18
|
-
|
19
|
-
1.0.5
|
20
|
-
- Fixed bug with initializing new EmbeddedDocumentArray with the proper parent when there is no data to deserialize.
|
21
|
-
|
22
|
-
1.0.6
|
23
|
-
- Allow EmbeddedDocument.new to call all accessors and not just those defined in the JSON schema.
|
24
|
-
- Allow getting and setting json attributes with [] and []=
|
25
|
-
|
26
|
-
1.0.7
|
27
|
-
- Added attributes= to EmbeddedDocument for mass attribute assignment
|
28
|
-
- Changed deserialized Json values to go through setter methods instead of being directly set
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.1.0.b6
|
data/init.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'json_record'
|
data/json_record.gemspec
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{json_record}
|
8
|
-
s.version = "1.1.0.b6"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Brian Durand"]
|
12
|
-
s.date = %q{2010-05-25}
|
13
|
-
s.email = %q{brian@embellishedvisions.com}
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
"README.rdoc"
|
16
|
-
]
|
17
|
-
s.files = [
|
18
|
-
"CHANGE_LOG",
|
19
|
-
"MIT_LICENSE",
|
20
|
-
"README.rdoc",
|
21
|
-
"Rakefile",
|
22
|
-
"VERSION",
|
23
|
-
"init.rb",
|
24
|
-
"json_record.gemspec",
|
25
|
-
"lib/json_record.rb",
|
26
|
-
"lib/json_record/attribute_methods.rb",
|
27
|
-
"lib/json_record/embedded_document.rb",
|
28
|
-
"lib/json_record/embedded_document_array.rb",
|
29
|
-
"lib/json_record/field_definition.rb",
|
30
|
-
"lib/json_record/json_field.rb",
|
31
|
-
"lib/json_record/schema.rb",
|
32
|
-
"lib/json_record/serialized.rb",
|
33
|
-
"spec/embedded_document_array_spec.rb",
|
34
|
-
"spec/embedded_document_spec.rb",
|
35
|
-
"spec/field_definition_spec.rb",
|
36
|
-
"spec/serialized_spec.rb",
|
37
|
-
"spec/spec_helper.rb",
|
38
|
-
"spec/test_models.rb"
|
39
|
-
]
|
40
|
-
s.homepage = %q{http://github.com/bdurand/json_record}
|
41
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
42
|
-
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = %q{1.3.7}
|
44
|
-
s.summary = %q{ActiveRecord support for mapping complex documents in a single RDBMS row via JSON serialization.}
|
45
|
-
s.test_files = [
|
46
|
-
"spec/embedded_document_array_spec.rb",
|
47
|
-
"spec/embedded_document_spec.rb",
|
48
|
-
"spec/field_definition_spec.rb",
|
49
|
-
"spec/serialized_spec.rb",
|
50
|
-
"spec/spec_helper.rb",
|
51
|
-
"spec/test_models.rb"
|
52
|
-
]
|
53
|
-
|
54
|
-
if s.respond_to? :specification_version then
|
55
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
56
|
-
s.specification_version = 3
|
57
|
-
|
58
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0.beta2"])
|
60
|
-
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
61
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
62
|
-
else
|
63
|
-
s.add_dependency(%q<activerecord>, [">= 3.0.0.beta2"])
|
64
|
-
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
65
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
66
|
-
end
|
67
|
-
else
|
68
|
-
s.add_dependency(%q<activerecord>, [">= 3.0.0.beta2"])
|
69
|
-
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
70
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|