ninja-model 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/Gemfile +2 -0
  2. data/README.md +1 -0
  3. data/Rakefile +38 -0
  4. data/lib/generators/ninja_model/model/model_generator.rb +19 -0
  5. data/lib/generators/ninja_model/model/templates/model.rb +7 -0
  6. data/lib/generators/ninja_model/scaffold/scaffold_generator.rb +69 -0
  7. data/lib/generators/ninja_model.rb +12 -0
  8. data/lib/ninja-model.rb +1 -0
  9. data/lib/ninja_model/adapters/abstract_adapter.rb +63 -0
  10. data/lib/ninja_model/adapters/adapter_manager.rb +67 -0
  11. data/lib/ninja_model/adapters/adapter_pool.rb +128 -0
  12. data/lib/ninja_model/adapters/adapter_specification.rb +11 -0
  13. data/lib/ninja_model/adapters.rb +70 -0
  14. data/lib/ninja_model/associations/active_record_proxy.rb +53 -0
  15. data/lib/ninja_model/associations/association_proxy.rb +8 -0
  16. data/lib/ninja_model/associations/belongs_to_association.rb +31 -0
  17. data/lib/ninja_model/associations/has_many_association.rb +36 -0
  18. data/lib/ninja_model/associations/has_one_association.rb +19 -0
  19. data/lib/ninja_model/associations/ninja_model_proxy.rb +46 -0
  20. data/lib/ninja_model/associations.rb +198 -0
  21. data/lib/ninja_model/attributes.rb +134 -0
  22. data/lib/ninja_model/base.rb +106 -0
  23. data/lib/ninja_model/callbacks.rb +14 -0
  24. data/lib/ninja_model/configuration.rb +20 -0
  25. data/lib/ninja_model/core_ext/symbol.rb +7 -0
  26. data/lib/ninja_model/errors.rb +5 -0
  27. data/lib/ninja_model/identity.rb +24 -0
  28. data/lib/ninja_model/log_subscriber.rb +18 -0
  29. data/lib/ninja_model/persistence.rb +76 -0
  30. data/lib/ninja_model/predicate.rb +43 -0
  31. data/lib/ninja_model/railtie.rb +27 -0
  32. data/lib/ninja_model/reflection.rb +118 -0
  33. data/lib/ninja_model/relation/finder_methods.rb +74 -0
  34. data/lib/ninja_model/relation/query_methods.rb +62 -0
  35. data/lib/ninja_model/relation/spawn_methods.rb +59 -0
  36. data/lib/ninja_model/relation.rb +80 -0
  37. data/lib/ninja_model/scoping.rb +50 -0
  38. data/lib/ninja_model/validation.rb +38 -0
  39. data/lib/ninja_model/version.rb +3 -0
  40. data/lib/ninja_model.rb +38 -0
  41. data/spec/ninja_model/adapters/adapter_pool_spec.rb +72 -0
  42. data/spec/ninja_model/adapters_spec.rb +8 -0
  43. data/spec/ninja_model/attributes_spec.rb +85 -0
  44. data/spec/ninja_model/base_spec.rb +66 -0
  45. data/spec/ninja_model/identity_spec.rb +41 -0
  46. data/spec/ninja_model/persistence_spec.rb +9 -0
  47. data/spec/ninja_model/predicate_spec.rb +13 -0
  48. data/spec/ninja_model/query_methods_spec.rb +76 -0
  49. data/spec/ninja_model/relation_spec.rb +26 -0
  50. data/spec/ninja_model/scoping_spec.rb +40 -0
  51. data/spec/ninja_model_spec.rb +11 -0
  52. data/spec/spec_helper.rb +9 -0
  53. data/spec/support/active_model_lint.rb +17 -0
  54. metadata +214 -0
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+ require 'ninja_model/attributes'
3
+
4
+ describe NinjaModel::Attributes do
5
+ before(:each) do
6
+ @klass = Class.new do
7
+ def initialize
8
+ @attributes = {}.with_indifferent_access
9
+ end
10
+ end
11
+ @klass.send :include, NinjaModel::Attributes
12
+ @klass.send :attr_reader, :attributes
13
+ end
14
+
15
+ describe 'adding an attribute' do
16
+ before(:each) do
17
+ @klass.attribute :var, :string
18
+ @obj = @klass.new
19
+ end
20
+
21
+ it 'should add a new attribute' do
22
+ @klass.model_attributes[:var].type.should eql(:string)
23
+ end
24
+
25
+ it 'should add a read method' do
26
+ lambda { @obj.send :var }.should_not raise_error(NoMethodError)
27
+ end
28
+
29
+ it 'should add a write method' do
30
+ lambda { @obj.send :var= }.should_not raise_error(NoMethodError)
31
+ end
32
+ end
33
+
34
+ describe 'with an instance' do
35
+ describe 'writing an attribute value' do
36
+ before(:each) do
37
+ @klass.attribute :valid, :string
38
+ @obj = @klass.new
39
+ end
40
+
41
+ it 'should raise an error when writing an invalid attribute' do
42
+ lambda { @obj.write_attribute(:invalid, 'test') }.should raise_error(NoMethodError)
43
+ end
44
+
45
+ it 'should properly update a valid attribute' do
46
+ @obj.write_attribute(:valid, 'test')
47
+ @obj.attributes['valid'].should eql('test')
48
+ end
49
+ end
50
+
51
+ describe 'assigning from a hash' do
52
+ before(:each) do
53
+ @klass.attribute :valid, :string
54
+ @obj = @klass.new
55
+ end
56
+
57
+ it 'should update instance attributes' do
58
+ attrs = {:valid => 'valid value'}
59
+ @obj.send :attributes=, attrs
60
+ @obj.valid.should eql('valid value')
61
+ end
62
+ end
63
+
64
+ describe 'checking existence of an attribute' do
65
+ before(:each) do
66
+ @klass.attribute :valid, :string
67
+ @obj = @klass.new
68
+ end
69
+ it { (@obj.send :attribute_method?, :valid).should be_true }
70
+ it { (@obj.send :attribute_method?, 'valid').should be_true }
71
+ it { (@obj.send :attribute_method?, :invalid).should be_false }
72
+ end
73
+
74
+ describe 'assigining default attributes from model' do
75
+ before(:each) do
76
+ @klass.attribute :valid, :string, {:default => 'foobar'}
77
+ @klass.send :class_inheritable_accessor, :primary_key
78
+ @obj = @klass.new
79
+ @attrs = @obj.attributes_from_model_attributes
80
+ end
81
+ it { @attrs.should have_key('valid') }
82
+ it { @attrs[:valid].should eql('foobar') }
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Base do
4
+ it_should_behave_like "ActiveModel"
5
+ before(:each) do
6
+ @klass = Class.new(NinjaModel::Base) do
7
+ end
8
+ @klass.send :attribute, :width, :integer
9
+ @klass.send :attribute, :height, :integer
10
+ @klass.send :attribute, :color, :string
11
+ end
12
+
13
+ it 'should return a configuration path' do
14
+ Rails.stubs(:root).returns('/')
15
+ @klass.configuration_path.should be_kind_of(String)
16
+ end
17
+
18
+ it 'should accept a configuration path' do
19
+ @klass.configuration_path = 'foo'
20
+ @klass.configuration_path.should eql('foo')
21
+ end
22
+
23
+ it 'should return NinjaModel\'s logger' do
24
+ logger = mock('logger')
25
+ NinjaModel.stubs(:logger).returns(logger)
26
+ @klass.logger.should eql(logger)
27
+ end
28
+
29
+ it { @klass.should respond_to(:logger) }
30
+
31
+ it 'should generate a relation' do
32
+ @klass.relation.should be_kind_of(NinjaModel::Relation)
33
+ end
34
+
35
+ it 'should instantiate from an existing data structure' do
36
+ attrs = {:width => 100, :height => 200, :color => 'red'}
37
+ @obj = @klass.new
38
+ @obj.instantiate(attrs)
39
+ @obj.attributes[:width].should eql(100)
40
+ end
41
+
42
+ it 'should return a configuration' do
43
+ @klass.stubs(:configuration_path)
44
+ IO.stubs(:read).returns('foo: bar')
45
+ @klass.configuration.should be_kind_of(Hash)
46
+ @klass.configuration[:foo].should eql('bar')
47
+ end
48
+
49
+ describe 'scoping' do
50
+ it 'should return a stock relation for unscoped' do
51
+ @klass.unscoped.predicates.should be_empty
52
+ @klass.unscoped.limit_value.should be_nil
53
+ @klass.unscoped.offset_value.should be_nil
54
+ @klass.unscoped.ordering.should be_empty
55
+ @klass.unscoped.predicates.should be_empty
56
+ end
57
+
58
+ it 'should handle default scoping' do
59
+ @klass.default_scope(@klass.where(:width => 100))
60
+ rel = @klass.default_scoping.first
61
+ rel.should be_kind_of(NinjaModel::Relation)
62
+ rel.predicates.first.should be_kind_of(NinjaModel::Predicate)
63
+ rel.predicates.first.value.should eql(100)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Identity do
4
+ before(:each) do
5
+ @klass = Class.new
6
+ @klass.send :include, NinjaModel::Identity
7
+ end
8
+
9
+ def persisted
10
+ obj = @klass.new
11
+ obj.stubs(:id).returns(123)
12
+ obj.stubs(:persisted?).returns(true)
13
+ obj
14
+ end
15
+
16
+ def unpersisted
17
+ obj = @klass.new
18
+ obj.stubs(:persisted?).returns(false)
19
+ obj
20
+ end
21
+
22
+ describe 'to_key' do
23
+ it 'should generate a key when persisted' do
24
+ persisted.to_key.should eql([123])
25
+ end
26
+
27
+ it 'should return nil when not persisted' do
28
+ unpersisted.to_key.should be_nil
29
+ end
30
+ end
31
+
32
+ describe 'to_param' do
33
+ it 'should generate a param when persisted' do
34
+ persisted.to_param.should eql('123')
35
+ end
36
+
37
+ it 'should return nil when not persisted' do
38
+ unpersisted.to_param.should be_nil
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Persistence do
4
+ before(:each) do
5
+ @klass = Class.new
6
+ @klass.send :include, NinjaModel::Persistence
7
+ end
8
+ it { @klass.should respond_to(:get) }
9
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Predicate do
4
+ before(:each) do
5
+ @pred = NinjaModel::Predicate.new(:var, :ge)
6
+ end
7
+
8
+ it { @pred.has_value?.should be_false }
9
+ it 'should have value after update' do
10
+ @pred.value = 'value'
11
+ @pred.has_value?.should be_true
12
+ end
13
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::QueryMethods do
4
+ before(:each) do
5
+ @model = mock('model')
6
+ @attribute = NinjaModel::Attribute.new(:valid, :integer, @model, {})
7
+ @model.stubs(:model_attributes).returns({:valid => @attribute}.with_indifferent_access)
8
+ @rel = NinjaModel::Relation.new(@model)
9
+ end
10
+
11
+ describe 'order' do
12
+ it 'should update the relations\'s order_values' do
13
+ new_rel = @rel.order(:new_order)
14
+ new_rel.ordering.first.should eql(:new_order)
15
+ end
16
+ end
17
+
18
+ describe 'where' do
19
+ it 'should update the relation\'s where_values' do
20
+ new_rel = @rel.where(:valid => 2)
21
+ new_rel.predicates.first.should be_kind_of(NinjaModel::Predicate)
22
+ new_rel.predicates.first.value.should eql(2)
23
+ end
24
+ end
25
+
26
+ describe 'limit' do
27
+ it 'should update the relation\'s limit' do
28
+ new_rel = @rel.limit(5)
29
+ new_rel.limit_value.should eql(5)
30
+ end
31
+ end
32
+
33
+ describe 'build_predicates' do
34
+ it 'should reject a string' do
35
+ lambda { @rel.send :build_predicates, 'foo < 1' }.should raise_error(ArgumentError)
36
+ end
37
+
38
+ describe 'with an array' do
39
+ it 'should return an array of NinjaModel::Predicates' do
40
+ res = @rel.send :build_predicates, [{:valid => 1}]
41
+ res.should be_kind_of(Array)
42
+ res.first.should be_kind_of(NinjaModel::Predicate)
43
+ res.first.value.should eql(1)
44
+ end
45
+ end
46
+ describe 'with a hash' do
47
+ it 'should handle a valid symbol' do
48
+ res = @rel.send :build_predicates, {:valid => 1}
49
+ res.should be_kind_of(Array)
50
+ res.first.should be_kind_of(NinjaModel::Predicate)
51
+ res.first.value.should eql(1)
52
+ end
53
+
54
+ it 'should reject an invalid symbol' do
55
+ lambda { @rel.send :build_predicates, {:invalid => 2} }.should raise_error(ArgumentError)
56
+ end
57
+
58
+ it 'should handle a predicate' do
59
+ rel = NinjaModel::Predicate.new(:valid, :eq)
60
+ res = @rel.send :build_predicates, {rel => 1}
61
+ res.should be_kind_of(Array)
62
+ res.first.should be_kind_of(NinjaModel::Predicate)
63
+ res.first.value.should eql(1)
64
+ end
65
+ it 'should reject an unkrecognized key' do
66
+ lambda { @rel.send :build_predicates, {'bad' => 12} }.should raise_error(ArgumentError)
67
+ end
68
+ end
69
+
70
+ it 'should reject an unprocessable argument' do
71
+ lambda { @rel.send :build_predicates, 5 }.should raise_error(ArgumentError)
72
+ end
73
+
74
+ end
75
+
76
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Relation do
4
+ describe 'with an instance' do
5
+ before(:each) do
6
+ @model = mock('NinjaModel')
7
+ @model.stubs(:adapter => stub('NinjaAdapter', :read => 'object_list'))
8
+ @rel = NinjaModel::Relation.new(@model)
9
+ end
10
+ it { @rel.should respond_to(:klass) }
11
+ it { @rel.should respond_to(:loaded?) }
12
+ it { @rel.should respond_to(:limit_value) }
13
+ it { @rel.limit_value.should be_nil }
14
+ it { @rel.should respond_to(:offset_value) }
15
+ it { @rel.offset_value.should be_nil }
16
+ it { @rel.should respond_to(:ordering) }
17
+ it { @rel.ordering.should eql([]) }
18
+ it { @rel.should respond_to(:predicates) }
19
+ it { @rel.predicates.should eql([]) }
20
+ it { @rel.loaded?.should be_false }
21
+
22
+ it 'should try to read when to_a is called' do
23
+ @rel.to_a.should eql('object_list')
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel::Scoping do
4
+ before(:each) do
5
+ @klass = Class.new
6
+ @klass.send :include, NinjaModel::Scoping
7
+ @relation = mock('Relation') do
8
+ stubs(:apply_finder_options).returns(self)
9
+ end
10
+ @klass.stubs(:relation).returns(@relation)
11
+ @klass.stubs(:current_scoped_methods).returns(nil)
12
+ end
13
+
14
+ describe 'scoped' do
15
+ it 'should return a relation when no options are sent' do
16
+ @klass.scoped.should be_instance_of(@relation.class)
17
+ end
18
+
19
+ it 'should accept scoping options' do
20
+ @klass.scoped(:conditions => {:key => 'value'}).should be_instance_of(@relation.class)
21
+
22
+ end
23
+ end
24
+
25
+ describe 'scopes' do
26
+ it 'should return an empty hash when no scopes have been set' do
27
+ @klass.scopes.should eql({})
28
+ end
29
+
30
+ it 'should return existing scopes' do
31
+ scopes = mock('scopes')
32
+ @klass.stubs(:read_inheritable_attribute).returns(scopes)
33
+ @klass.scopes.should eql(scopes)
34
+ end
35
+ end
36
+
37
+ describe 'defining a scope' do
38
+
39
+ end
40
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NinjaModel do
4
+ it { NinjaModel.should respond_to(:logger) }
5
+
6
+ it 'should accept a logger' do
7
+ logger = mock('logger')
8
+ NinjaModel.set_logger(logger)
9
+ NinjaModel.logger.should eql(logger)
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ require 'bundler/setup'
2
+ Bundler.require(:default)
3
+ require 'rspec/core'
4
+
5
+ Dir[File.join(File.expand_path('../', __FILE__), 'support/**/*.rb')].each { |f| require f }
6
+
7
+ RSpec.configure do |config|
8
+ config.mock_with :mocha
9
+ end
@@ -0,0 +1,17 @@
1
+ require 'test/unit/assertions'
2
+ require 'active_model/lint'
3
+
4
+ shared_examples_for "ActiveModel" do
5
+ include Test::Unit::Assertions
6
+ include ActiveModel::Lint::Tests
7
+
8
+ ActiveModel::Lint::Tests.public_instance_methods.map { |m| m.to_s }.grep(/^test/).each do |m|
9
+ example m.gsub('_', '') do
10
+ send m
11
+ end
12
+ end
13
+
14
+ def model
15
+ subject
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ninja-model
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 2
10
+ version: 0.4.2
11
+ platform: ruby
12
+ authors:
13
+ - Josh Williams
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-30 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 1
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 3
34
+ version: 3.0.3
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 13
46
+ segments:
47
+ - 2
48
+ - 0
49
+ - 1
50
+ version: 2.0.1
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: mocha
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 43
62
+ segments:
63
+ - 0
64
+ - 9
65
+ - 8
66
+ version: 0.9.8
67
+ type: :development
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: rcov
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 41
78
+ segments:
79
+ - 0
80
+ - 9
81
+ - 9
82
+ version: 0.9.9
83
+ type: :development
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: cucumber
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 51
94
+ segments:
95
+ - 0
96
+ - 9
97
+ - 4
98
+ version: 0.9.4
99
+ type: :development
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: nokogiri
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ hash: 15
110
+ segments:
111
+ - 1
112
+ - 4
113
+ - 4
114
+ version: 1.4.4
115
+ type: :development
116
+ version_requirements: *id006
117
+ description: Write a gem description
118
+ email: theprime@codingprime.com
119
+ executables: []
120
+
121
+ extensions: []
122
+
123
+ extra_rdoc_files: []
124
+
125
+ files:
126
+ - lib/ninja_model.rb
127
+ - lib/generators/ninja_model.rb
128
+ - lib/generators/ninja_model/model/model_generator.rb
129
+ - lib/generators/ninja_model/model/templates/model.rb
130
+ - lib/generators/ninja_model/scaffold/scaffold_generator.rb
131
+ - lib/ninja-model.rb
132
+ - lib/ninja_model/configuration.rb
133
+ - lib/ninja_model/reflection.rb
134
+ - lib/ninja_model/associations/has_many_association.rb
135
+ - lib/ninja_model/associations/ninja_model_proxy.rb
136
+ - lib/ninja_model/associations/has_one_association.rb
137
+ - lib/ninja_model/associations/association_proxy.rb
138
+ - lib/ninja_model/associations/active_record_proxy.rb
139
+ - lib/ninja_model/associations/belongs_to_association.rb
140
+ - lib/ninja_model/version.rb
141
+ - lib/ninja_model/attributes.rb
142
+ - lib/ninja_model/associations.rb
143
+ - lib/ninja_model/log_subscriber.rb
144
+ - lib/ninja_model/persistence.rb
145
+ - lib/ninja_model/callbacks.rb
146
+ - lib/ninja_model/predicate.rb
147
+ - lib/ninja_model/core_ext/symbol.rb
148
+ - lib/ninja_model/errors.rb
149
+ - lib/ninja_model/adapters.rb
150
+ - lib/ninja_model/base.rb
151
+ - lib/ninja_model/identity.rb
152
+ - lib/ninja_model/relation.rb
153
+ - lib/ninja_model/adapters/adapter_specification.rb
154
+ - lib/ninja_model/adapters/abstract_adapter.rb
155
+ - lib/ninja_model/adapters/adapter_manager.rb
156
+ - lib/ninja_model/adapters/adapter_pool.rb
157
+ - lib/ninja_model/validation.rb
158
+ - lib/ninja_model/relation/finder_methods.rb
159
+ - lib/ninja_model/relation/query_methods.rb
160
+ - lib/ninja_model/relation/spawn_methods.rb
161
+ - lib/ninja_model/railtie.rb
162
+ - lib/ninja_model/scoping.rb
163
+ - spec/spec_helper.rb
164
+ - spec/support/active_model_lint.rb
165
+ - spec/ninja_model_spec.rb
166
+ - spec/ninja_model/identity_spec.rb
167
+ - spec/ninja_model/attributes_spec.rb
168
+ - spec/ninja_model/base_spec.rb
169
+ - spec/ninja_model/predicate_spec.rb
170
+ - spec/ninja_model/persistence_spec.rb
171
+ - spec/ninja_model/relation_spec.rb
172
+ - spec/ninja_model/adapters/adapter_pool_spec.rb
173
+ - spec/ninja_model/adapters_spec.rb
174
+ - spec/ninja_model/query_methods_spec.rb
175
+ - spec/ninja_model/scoping_spec.rb
176
+ - Rakefile
177
+ - Gemfile
178
+ - README.md
179
+ has_rdoc: true
180
+ homepage: http://github.com/t3hpr1m3/ninja-model.git
181
+ licenses: []
182
+
183
+ post_install_message:
184
+ rdoc_options: []
185
+
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ hash: 3
194
+ segments:
195
+ - 0
196
+ version: "0"
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ none: false
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ hash: 3
203
+ segments:
204
+ - 0
205
+ version: "0"
206
+ requirements: []
207
+
208
+ rubyforge_project: ninja-model
209
+ rubygems_version: 1.3.7
210
+ signing_key:
211
+ specification_version: 3
212
+ summary: Write a gem summary
213
+ test_files: []
214
+