ninja-model 0.4.2

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.
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
+