ninja-model 0.4.2 → 0.5.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/.gitignore +19 -0
- data/Rakefile +0 -7
- data/autotest/discover.rb +1 -0
- data/lib/ninja_model.rb +22 -26
- data/lib/ninja_model/adapters.rb +33 -43
- data/lib/ninja_model/adapters/abstract_adapter.rb +2 -10
- data/lib/ninja_model/adapters/adapter_manager.rb +17 -10
- data/lib/ninja_model/adapters/adapter_pool.rb +15 -17
- data/lib/ninja_model/adapters/adapter_specification.rb +3 -3
- data/lib/ninja_model/associations.rb +25 -106
- data/lib/ninja_model/associations/association_proxy.rb +119 -1
- data/lib/ninja_model/associations/belongs_to_association.rb +5 -1
- data/lib/ninja_model/attribute.rb +130 -0
- data/lib/ninja_model/{attributes.rb → attribute_methods.rb} +21 -42
- data/lib/ninja_model/base.rb +23 -20
- data/lib/ninja_model/callbacks.rb +2 -11
- data/lib/ninja_model/identity.rb +6 -11
- data/lib/ninja_model/persistence.rb +15 -30
- data/lib/ninja_model/predicate.rb +4 -4
- data/lib/ninja_model/rails_ext/active_record.rb +187 -0
- data/lib/ninja_model/railtie.rb +14 -8
- data/lib/ninja_model/reflection.rb +7 -14
- data/lib/ninja_model/relation.rb +5 -3
- data/lib/ninja_model/relation/finder_methods.rb +4 -8
- data/lib/ninja_model/relation/spawn_methods.rb +1 -1
- data/lib/ninja_model/validation.rb +6 -23
- data/lib/ninja_model/version.rb +1 -1
- data/ninja-model.gemspec +28 -0
- data/spec/ninja_model/adapters/abstract_adapter_spec.rb +45 -0
- data/spec/ninja_model/adapters/adapter_manager_spec.rb +69 -0
- data/spec/ninja_model/adapters/adapter_pool_spec.rb +210 -48
- data/spec/ninja_model/adapters_spec.rb +77 -0
- data/spec/ninja_model/attribute_methods_spec.rb +95 -0
- data/spec/ninja_model/attribute_spec.rb +129 -0
- data/spec/ninja_model/base_spec.rb +4 -52
- data/spec/ninja_model/identity_spec.rb +16 -32
- data/spec/ninja_model/persistence_spec.rb +130 -4
- data/spec/ninja_model/predicate_spec.rb +40 -6
- data/spec/ninja_model/query_methods_spec.rb +76 -74
- data/spec/ninja_model/reflection_spec.rb +63 -0
- data/spec/ninja_model/relation_spec.rb +213 -20
- data/spec/ninja_model/symbol_spec.rb +19 -0
- data/spec/ninja_model/validation_spec.rb +18 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/matchers/convert.rb +30 -0
- metadata +85 -63
- data/lib/ninja_model/associations/active_record_proxy.rb +0 -53
- data/lib/ninja_model/associations/ninja_model_proxy.rb +0 -46
- data/lib/ninja_model/configuration.rb +0 -20
- data/lib/ninja_model/errors.rb +0 -5
- data/lib/ninja_model/log_subscriber.rb +0 -18
- data/lib/ninja_model/scoping.rb +0 -50
- data/spec/ninja_model/attributes_spec.rb +0 -85
- data/spec/ninja_model/scoping_spec.rb +0 -40
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Symbol do
|
4
|
+
subject { :foobar }
|
5
|
+
it { should respond_to(:eq) }
|
6
|
+
it { should respond_to(:ne) }
|
7
|
+
it { should respond_to(:gt) }
|
8
|
+
it { should respond_to(:gte) }
|
9
|
+
it { should respond_to(:lt) }
|
10
|
+
it { should respond_to(:lte) }
|
11
|
+
it { should respond_to(:in) }
|
12
|
+
its(:eq) { should be_kind_of(NinjaModel::Predicate) }
|
13
|
+
its(:ne) { should be_kind_of(NinjaModel::Predicate) }
|
14
|
+
its(:gt) { should be_kind_of(NinjaModel::Predicate) }
|
15
|
+
its(:gte) { should be_kind_of(NinjaModel::Predicate) }
|
16
|
+
its(:lt) { should be_kind_of(NinjaModel::Predicate) }
|
17
|
+
its(:lte) { should be_kind_of(NinjaModel::Predicate) }
|
18
|
+
its(:in) { should be_kind_of(NinjaModel::Predicate) }
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NinjaModel::Validation do
|
4
|
+
class ValidationModel < NinjaModel::Base
|
5
|
+
attribute :testing, :integer
|
6
|
+
validates :testing, :numericality => true
|
7
|
+
end
|
8
|
+
|
9
|
+
before {
|
10
|
+
@obj = ValidationModel.new
|
11
|
+
}
|
12
|
+
subject { @obj }
|
13
|
+
it { should respond_to(:save) }
|
14
|
+
it { should respond_to(:valid?) }
|
15
|
+
|
16
|
+
describe 'save' do
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,3 +7,12 @@ Dir[File.join(File.expand_path('../', __FILE__), 'support/**/*.rb')].each { |f|
|
|
7
7
|
RSpec.configure do |config|
|
8
8
|
config.mock_with :mocha
|
9
9
|
end
|
10
|
+
|
11
|
+
class DummyLogger
|
12
|
+
def debug(*args)
|
13
|
+
end
|
14
|
+
def warn(*args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
NinjaModel.set_logger(DummyLogger.new)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module CustomMatchers
|
2
|
+
class ConvertMatcher
|
3
|
+
def initialize(value)
|
4
|
+
puts "asdfaj;lskdfj;lkasjdf;a"
|
5
|
+
@value_to_convert = value
|
6
|
+
end
|
7
|
+
|
8
|
+
def matches?(actual)
|
9
|
+
puts "**********************"
|
10
|
+
result = actual.convert(@value_to_convert)
|
11
|
+
unless defined?(@expected_value)
|
12
|
+
false
|
13
|
+
end
|
14
|
+
#result.eql?(@expected_value)
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
def to(expected)
|
19
|
+
@expected_value = expected
|
20
|
+
end
|
21
|
+
|
22
|
+
def description
|
23
|
+
"convert #{@value_to_convert} to #{@expected_value}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def convert(value)
|
28
|
+
ConvertMatcher.new(value)
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ninja-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 9
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 1
|
10
|
+
version: 0.5.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josh Williams
|
@@ -15,16 +15,15 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-05-16 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
21
|
+
name: activerecord
|
23
22
|
prerelease: false
|
24
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
|
-
- -
|
26
|
+
- - ~>
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
hash: 1
|
30
29
|
segments:
|
@@ -42,12 +41,12 @@ dependencies:
|
|
42
41
|
requirements:
|
43
42
|
- - ~>
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
44
|
+
hash: 7
|
46
45
|
segments:
|
47
46
|
- 2
|
47
|
+
- 2
|
48
48
|
- 0
|
49
|
-
|
50
|
-
version: 2.0.1
|
49
|
+
version: 2.2.0
|
51
50
|
type: :development
|
52
51
|
version_requirements: *id002
|
53
52
|
- !ruby/object:Gem::Dependency
|
@@ -83,38 +82,38 @@ dependencies:
|
|
83
82
|
type: :development
|
84
83
|
version_requirements: *id004
|
85
84
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
85
|
+
name: nokogiri
|
87
86
|
prerelease: false
|
88
87
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
88
|
none: false
|
90
89
|
requirements:
|
91
90
|
- - ~>
|
92
91
|
- !ruby/object:Gem::Version
|
93
|
-
hash:
|
92
|
+
hash: 15
|
94
93
|
segments:
|
95
|
-
-
|
96
|
-
- 9
|
94
|
+
- 1
|
97
95
|
- 4
|
98
|
-
|
96
|
+
- 4
|
97
|
+
version: 1.4.4
|
99
98
|
type: :development
|
100
99
|
version_requirements: *id005
|
101
100
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
101
|
+
name: autotest
|
103
102
|
prerelease: false
|
104
103
|
requirement: &id006 !ruby/object:Gem::Requirement
|
105
104
|
none: false
|
106
105
|
requirements:
|
107
106
|
- - ~>
|
108
107
|
- !ruby/object:Gem::Version
|
109
|
-
hash:
|
108
|
+
hash: 35
|
110
109
|
segments:
|
111
|
-
- 1
|
112
110
|
- 4
|
113
111
|
- 4
|
114
|
-
|
112
|
+
- 6
|
113
|
+
version: 4.4.6
|
115
114
|
type: :development
|
116
115
|
version_requirements: *id006
|
117
|
-
description:
|
116
|
+
description: Pseudo-ORM for Ruby/Rails with an ActiveRecord-like interface
|
118
117
|
email: theprime@codingprime.com
|
119
118
|
executables: []
|
120
119
|
|
@@ -123,60 +122,64 @@ extensions: []
|
|
123
122
|
extra_rdoc_files: []
|
124
123
|
|
125
124
|
files:
|
126
|
-
-
|
125
|
+
- .gitignore
|
126
|
+
- Gemfile
|
127
|
+
- README.md
|
128
|
+
- Rakefile
|
129
|
+
- autotest/discover.rb
|
127
130
|
- lib/generators/ninja_model.rb
|
128
131
|
- lib/generators/ninja_model/model/model_generator.rb
|
129
132
|
- lib/generators/ninja_model/model/templates/model.rb
|
130
133
|
- lib/generators/ninja_model/scaffold/scaffold_generator.rb
|
131
134
|
- lib/ninja-model.rb
|
132
|
-
- lib/ninja_model
|
133
|
-
- lib/ninja_model/
|
134
|
-
- lib/ninja_model/
|
135
|
-
- lib/ninja_model/
|
136
|
-
- lib/ninja_model/
|
135
|
+
- lib/ninja_model.rb
|
136
|
+
- lib/ninja_model/adapters.rb
|
137
|
+
- lib/ninja_model/adapters/abstract_adapter.rb
|
138
|
+
- lib/ninja_model/adapters/adapter_manager.rb
|
139
|
+
- lib/ninja_model/adapters/adapter_pool.rb
|
140
|
+
- lib/ninja_model/adapters/adapter_specification.rb
|
141
|
+
- lib/ninja_model/associations.rb
|
137
142
|
- lib/ninja_model/associations/association_proxy.rb
|
138
|
-
- lib/ninja_model/associations/active_record_proxy.rb
|
139
143
|
- lib/ninja_model/associations/belongs_to_association.rb
|
140
|
-
- lib/ninja_model/
|
141
|
-
- lib/ninja_model/
|
142
|
-
- lib/ninja_model/
|
143
|
-
- lib/ninja_model/
|
144
|
-
- lib/ninja_model/
|
144
|
+
- lib/ninja_model/associations/has_many_association.rb
|
145
|
+
- lib/ninja_model/associations/has_one_association.rb
|
146
|
+
- lib/ninja_model/attribute.rb
|
147
|
+
- lib/ninja_model/attribute_methods.rb
|
148
|
+
- lib/ninja_model/base.rb
|
145
149
|
- lib/ninja_model/callbacks.rb
|
146
|
-
- lib/ninja_model/predicate.rb
|
147
150
|
- 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
151
|
- lib/ninja_model/identity.rb
|
152
|
+
- lib/ninja_model/persistence.rb
|
153
|
+
- lib/ninja_model/predicate.rb
|
154
|
+
- lib/ninja_model/rails_ext/active_record.rb
|
155
|
+
- lib/ninja_model/railtie.rb
|
156
|
+
- lib/ninja_model/reflection.rb
|
152
157
|
- 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
158
|
- lib/ninja_model/relation/finder_methods.rb
|
159
159
|
- lib/ninja_model/relation/query_methods.rb
|
160
160
|
- lib/ninja_model/relation/spawn_methods.rb
|
161
|
-
- lib/ninja_model/
|
162
|
-
- lib/ninja_model/
|
163
|
-
-
|
164
|
-
- spec/
|
165
|
-
- spec/
|
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
|
161
|
+
- lib/ninja_model/validation.rb
|
162
|
+
- lib/ninja_model/version.rb
|
163
|
+
- ninja-model.gemspec
|
164
|
+
- spec/ninja_model/adapters/abstract_adapter_spec.rb
|
165
|
+
- spec/ninja_model/adapters/adapter_manager_spec.rb
|
172
166
|
- spec/ninja_model/adapters/adapter_pool_spec.rb
|
173
167
|
- spec/ninja_model/adapters_spec.rb
|
168
|
+
- spec/ninja_model/attribute_methods_spec.rb
|
169
|
+
- spec/ninja_model/attribute_spec.rb
|
170
|
+
- spec/ninja_model/base_spec.rb
|
171
|
+
- spec/ninja_model/identity_spec.rb
|
172
|
+
- spec/ninja_model/persistence_spec.rb
|
173
|
+
- spec/ninja_model/predicate_spec.rb
|
174
174
|
- spec/ninja_model/query_methods_spec.rb
|
175
|
-
- spec/ninja_model/
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
|
175
|
+
- spec/ninja_model/reflection_spec.rb
|
176
|
+
- spec/ninja_model/relation_spec.rb
|
177
|
+
- spec/ninja_model/symbol_spec.rb
|
178
|
+
- spec/ninja_model/validation_spec.rb
|
179
|
+
- spec/ninja_model_spec.rb
|
180
|
+
- spec/spec_helper.rb
|
181
|
+
- spec/support/active_model_lint.rb
|
182
|
+
- spec/support/matchers/convert.rb
|
180
183
|
homepage: http://github.com/t3hpr1m3/ninja-model.git
|
181
184
|
licenses: []
|
182
185
|
|
@@ -206,9 +209,28 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
209
|
requirements: []
|
207
210
|
|
208
211
|
rubyforge_project: ninja-model
|
209
|
-
rubygems_version: 1.
|
212
|
+
rubygems_version: 1.7.2
|
210
213
|
signing_key:
|
211
214
|
specification_version: 3
|
212
|
-
summary:
|
213
|
-
test_files:
|
214
|
-
|
215
|
+
summary: Pseudo-ORM for Ruby
|
216
|
+
test_files:
|
217
|
+
- spec/ninja_model/adapters/abstract_adapter_spec.rb
|
218
|
+
- spec/ninja_model/adapters/adapter_manager_spec.rb
|
219
|
+
- spec/ninja_model/adapters/adapter_pool_spec.rb
|
220
|
+
- spec/ninja_model/adapters_spec.rb
|
221
|
+
- spec/ninja_model/attribute_methods_spec.rb
|
222
|
+
- spec/ninja_model/attribute_spec.rb
|
223
|
+
- spec/ninja_model/base_spec.rb
|
224
|
+
- spec/ninja_model/identity_spec.rb
|
225
|
+
- spec/ninja_model/persistence_spec.rb
|
226
|
+
- spec/ninja_model/predicate_spec.rb
|
227
|
+
- spec/ninja_model/query_methods_spec.rb
|
228
|
+
- spec/ninja_model/reflection_spec.rb
|
229
|
+
- spec/ninja_model/relation_spec.rb
|
230
|
+
- spec/ninja_model/symbol_spec.rb
|
231
|
+
- spec/ninja_model/validation_spec.rb
|
232
|
+
- spec/ninja_model_spec.rb
|
233
|
+
- spec/spec_helper.rb
|
234
|
+
- spec/support/active_model_lint.rb
|
235
|
+
- spec/support/matchers/convert.rb
|
236
|
+
has_rdoc:
|
@@ -1,53 +0,0 @@
|
|
1
|
-
|
2
|
-
module NinjaModel
|
3
|
-
module Associations
|
4
|
-
class ActiveRecordProxy
|
5
|
-
def initialize(ninja_model)
|
6
|
-
@klass = ninja_model
|
7
|
-
@klass.class_eval do
|
8
|
-
def proxy
|
9
|
-
@proxy ||= begin
|
10
|
-
self.class.proxy.instance(self)
|
11
|
-
end
|
12
|
-
@proxy.attributes = self.attributes.delete_if { |k,v| k.eql?('id') }
|
13
|
-
@proxy
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
@proxy_klass = ninja_model.parent.const_set("#{@klass.model_name}Proxy", Class.new(ActiveRecord::Base))
|
18
|
-
@proxy_klass.class_eval do
|
19
|
-
cattr_accessor :columns
|
20
|
-
self.columns = []
|
21
|
-
def self.column(name, sql_type = nil, default = nil)
|
22
|
-
self.columns << ActiveRecord::ConnectionAdapters::Column.new(name, nil, sql_type.to_s, default)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
@klass.model_attributes.each do |attr|
|
27
|
-
@proxy_klass.send :column, attr.name, attr.type, attr.default
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def instance(obj)
|
32
|
-
proxy = @proxy_klass.new
|
33
|
-
proxy.send :init_with, {'attributes' => obj.attributes}
|
34
|
-
proxy
|
35
|
-
end
|
36
|
-
|
37
|
-
def handle_association(macro, association_id, options)
|
38
|
-
unless macro.eql?(:belongs_to)
|
39
|
-
options = {:foreign_key => derive_foreign_key}.merge(options)
|
40
|
-
end
|
41
|
-
|
42
|
-
@proxy = nil
|
43
|
-
@proxy_klass.send macro, association_id, options
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def derive_foreign_key
|
49
|
-
"#{@klass.name.underscore}_id".to_sym
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module NinjaModel
|
2
|
-
module Associations
|
3
|
-
class NinjaModelProxy
|
4
|
-
attr_reader :proxy_klass
|
5
|
-
def initialize(active_record)
|
6
|
-
@klass = active_record
|
7
|
-
@klass.class_eval do
|
8
|
-
def ninja_proxy
|
9
|
-
@ninja_proxy ||= begin
|
10
|
-
self.class.ninja_proxy.instance(self)
|
11
|
-
end
|
12
|
-
@ninja_proxy.attributes = self.attributes.delete_if { |k,v| k.eql?('id') }
|
13
|
-
@ninja_proxy
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
@proxy_klass = active_record.parent.const_set("#{@klass.model_name}Proxy", Class.new(NinjaModel::Base))
|
18
|
-
|
19
|
-
@klass.columns_hash.each_pair do |k,v|
|
20
|
-
@proxy_klass.send :attribute, k, v.type, v.default, @proxy_klass
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def instance(obj)
|
25
|
-
proxy = @proxy_klass.new
|
26
|
-
proxy.send :instantiate, {'attributes' => obj.attributes}
|
27
|
-
proxy
|
28
|
-
end
|
29
|
-
|
30
|
-
def handle_association(macro, association_id, options)
|
31
|
-
unless macro.eql?(:belongs_to)
|
32
|
-
options = {:foreign_key => derive_foreign_key}.merge(options)
|
33
|
-
end
|
34
|
-
|
35
|
-
@proxy = nil
|
36
|
-
@proxy_klass.send macro, association_id, options
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def derive_foreign_key
|
42
|
-
"#{@klass.name.underscore}_id".to_sym
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module NinjaModel
|
2
|
-
|
3
|
-
mattr_accessor :configuration
|
4
|
-
|
5
|
-
class Configuration
|
6
|
-
attr_accessor :config_file_path, :adapter_path, :specs
|
7
|
-
|
8
|
-
def self.create
|
9
|
-
NinjaModel.configuration ||= new
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
@config_file_path = 'config/ninja_model.yml'
|
16
|
-
@adapter_path = 'ninja_model/adapters'
|
17
|
-
@specs = {}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|