json_record 1.1.0.b6 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
-