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 CHANGED
@@ -1,23 +1,22 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require 'rake/rdoctask'
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 'spec/rake/spectask'
10
- desc 'Test json_record.'
11
- Spec::Rake::SpecTask.new(:test) do |t|
12
- t.spec_files = FileList.new('spec/**/*_spec.rb')
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
- tast :test do
16
- STDERR.puts "You must have rspec >= 1.3.0 to run the tests"
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 for json_record.'
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.beta2')
38
- gem.add_development_dependency('rspec', '>= 1.3.0')
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
@@ -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 :Schema, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'schema'))
10
- autoload :AttributeMethods, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'attribute_methods'))
11
- autoload :EmbeddedDocument, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'embedded_document'))
12
- autoload :EmbeddedDocumentArray, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'embedded_document_array'))
13
- autoload :FieldDefinition, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'field_definition'))
14
- autoload :JsonField, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'json_field'))
15
- autoload :Serialized, File.expand_path(File.join(File.dirname(__FILE__), 'json_record', 'serialized'))
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.write_inheritable_attribute(:schema, Schema.new(base, nil))
20
- base.class_inheritable_reader :schema
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
- (@default.dup rescue @default) if @default
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
- @compressed = record.class.columns_hash[name].type == :binary
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
- class_inheritable_accessor :json_serialized_fields
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.dup
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 = {}
@@ -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.should == {
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
@@ -1,12 +1,13 @@
1
1
  require 'rubygems'
2
2
 
3
- active_record_version = ENV["ACTIVE_RECORD_VERSION"] || [">= 3.0.0.beta2"]
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
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'json_record'))
12
- require File.expand_path(File.join(File.dirname(__FILE__), 'test_models'))
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__)
@@ -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: 6629696
5
- prerelease: true
4
+ hash: 17
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- - b6
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: 2010-05-25 00:00:00 -05:00
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: -1848230022
29
+ hash: 7
31
30
  segments:
32
31
  - 3
33
32
  - 0
34
33
  - 0
35
- - beta2
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: 27
45
+ hash: 15
48
46
  segments:
49
- - 1
50
- - 3
47
+ - 2
51
48
  - 0
52
- version: 1.3.0
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: 25
119
+ hash: 3
123
120
  segments:
124
- - 1
125
- - 3
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.3.7
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
- - spec/embedded_document_array_spec.rb
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'
@@ -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
-