ninja-model 0.6.2 → 0.7.0

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 CHANGED
@@ -17,4 +17,4 @@ Gemfile.lock
17
17
  .bundle
18
18
  *.gem
19
19
  .rspec
20
- .rvmrc
20
+ .yardoc
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@ninja-model
data/Gemfile CHANGED
@@ -1,2 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
  gemspec
3
+
4
+ group :test, :development do
5
+ gem 'yard'
6
+ gem 'simplecov', :require => false
7
+ end
data/Guardfile ADDED
@@ -0,0 +1,19 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
11
+ watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
12
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch('config/routes.rb') { "spec/routing" }
15
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
16
+ # Capybara request specs
17
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
18
+ end
19
+
data/Rakefile CHANGED
@@ -1,31 +1,21 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
3
7
 
4
- require 'rake'
5
- require 'rake/rdoctask'
6
8
  require 'rspec/core/rake_task'
9
+ require 'yard'
7
10
 
8
- RSpec::Core::RakeTask.new(:spec) do |t|
9
- t.verbose = false
10
- end
11
11
 
12
- desc 'Run specs with documentation format'
13
- RSpec::Core::RakeTask.new(:specd) do |t|
12
+ RSpec::Core::RakeTask.new(:spec) do |t|
14
13
  t.verbose = false
15
- t.rspec_opts = '--format d'
14
+ t.pattern = 'spec/**/*_spec.rb'
16
15
  end
17
16
 
18
- Rake::RDocTask.new do |r|
19
- r.rdoc_dir = 'doc/html'
20
- r.main = "README.md"
21
- r.rdoc_files.include('README.md', 'lib/**/*.rb')
22
- r.rdoc_files.exclude('lib/generators/**/*')
17
+ YARD::Rake::YardocTask.new do |t|
18
+ t.options = ['--exclude', 'generators']
23
19
  end
24
20
 
25
- namespace :spec do
26
- RSpec::Core::RakeTask.new(:rcov) do |t|
27
- t.rcov = true
28
- t.rcov_opts = %w{--text-report --sort coverage}
29
- t.rcov_opts << %w{--exclude gems\/,spec\/}
30
- end
31
- end
21
+ Bundler::GemHelper.install_tasks
@@ -1,4 +1,4 @@
1
- require 'active_record/associations/association_proxy'
1
+ require 'active_record/associations/collection_proxy'
2
2
 
3
3
  module NinjaModel
4
4
  module Associations
@@ -11,6 +11,8 @@ module NinjaModel
11
11
  def method_missing(method, *args)
12
12
  if @relation.respond_to?(method)
13
13
  @relation.send(method, *args)
14
+ elsif @relation.klass.respond_to?(method)
15
+ @relation.klass.send(method, *args)
14
16
  else
15
17
  super
16
18
  end
@@ -4,8 +4,8 @@ module NinjaModel
4
4
  include ActiveModel::AttributeMethods
5
5
  include ActiveModel::Dirty
6
6
 
7
- class_inheritable_accessor :model_attributes
8
- self.model_attributes = []
7
+ #class_attribute :model_attributes
8
+ #self.model_attributes = []
9
9
  attribute_method_suffix('', '=', '_before_type_cast')
10
10
 
11
11
  class << self
@@ -32,10 +32,21 @@ module NinjaModel
32
32
 
33
33
  define_model_callbacks :initialize, :find, :touch, :only => :after
34
34
 
35
- class_inheritable_accessor :default_scoping, :instance_writer => false
36
- self.default_scoping = []
37
-
38
35
  class << self
36
+ def inherited(subclass)
37
+ subclass.class_attribute :model_attributes
38
+ if self.respond_to?(:model_attributes)
39
+ subclass.model_attributes = self.model_attributes.dup
40
+ else
41
+ subclass.model_attributes = []
42
+ end
43
+ subclass.class_attribute :default_scoping
44
+ if self.respond_to?(:default_scoping)
45
+ subclass.default_scoping = self.default_scoping.dup
46
+ else
47
+ subclass.default_scoping = []
48
+ end
49
+ end
39
50
 
40
51
  delegate :find, :first, :last, :all, :exists?, :to => :scoped
41
52
  delegate :where, :order, :limit, :to => :scoped
@@ -62,6 +73,10 @@ module NinjaModel
62
73
  self.default_scoping << build_finder_relation(options, default_scoping.pop)
63
74
  end
64
75
 
76
+ def current_scope
77
+ current_scoped_methods
78
+ end
79
+
65
80
  def current_scoped_methods
66
81
  last = scoped_methods.last
67
82
  last.is_a?(Proc) ? unscoped(&last) : last
@@ -78,6 +93,31 @@ module NinjaModel
78
93
  relation = scope.merge(relation) if scope
79
94
  relation
80
95
  end
96
+
97
+ def compute_type(type_name)
98
+ if type_name.match(/^::/)
99
+ # If the type is prefixed with a scope operator then we assume that
100
+ # the type_name is an absolute reference.
101
+ ActiveSupport::Dependencies.constantize(type_name)
102
+ else
103
+ # Build a list of candidates to search for
104
+ candidates = []
105
+ name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
106
+ candidates << type_name
107
+
108
+ candidates.each do |candidate|
109
+ begin
110
+ constant = ActiveSupport::Dependencies.constantize(candidate)
111
+ return constant if candidate == constant.to_s
112
+ rescue NameError => e
113
+ # We don't want to swallow NoMethodError < NameError errors
114
+ raise e unless e.instance_of?(NameError)
115
+ end
116
+ end
117
+
118
+ raise NameError, "uninitialized constant #{candidates.first}"
119
+ end
120
+ end
81
121
  end
82
122
 
83
123
  def attributes
@@ -90,6 +130,8 @@ module NinjaModel
90
130
 
91
131
  def initialize(attributes = nil)
92
132
  @attributes = attributes_from_model_attributes
133
+ @association_cache = {}
134
+ @aggregation_cache = {}
93
135
  @persisted = false
94
136
  @readonly = true
95
137
  @destroyed = false
@@ -115,6 +157,13 @@ module NinjaModel
115
157
  self
116
158
  end
117
159
 
160
+ def derive_class(association_id)
161
+ klass = association_id.to_s.camelize
162
+ klass = klass.singularize
163
+ compute_type(klass)
164
+ end
165
+
166
+
118
167
  private
119
168
 
120
169
  def populate_with_current_scope_attributes
@@ -1,6 +1,6 @@
1
1
  module NinjaModel
2
2
  class Base
3
- class_inheritable_accessor :primary_key
3
+ class_attribute :primary_key
4
4
  self.primary_key = :id
5
5
  undef_method(:id) if method_defined?(:id)
6
6
  end
@@ -4,14 +4,31 @@ module ActiveRecord
4
4
  class Base
5
5
  class << self
6
6
  def has_one_with_ninja_model(association_id, options = {})
7
- if NinjaModel.ninja_model?(options[:class_name] || association_id)
8
- ninja_proxy.handle_association(:has_one, association_id, options)
7
+ klass = options[:class_name] || association_id
8
+ klass = klass.to_s.camelize
9
+ klass = klass.singularize
10
+ klass = compute_type(klass)
11
+ if NinjaModel.ninja_model?(klass)
12
+ ninja_proxy.handle_association(:has_one, association_id, options.merge({:class_name => klass.name}))
9
13
  else
10
14
  has_one_without_ninja_model(association_id, options)
11
15
  end
12
16
  end
13
17
  alias_method_chain :has_one, :ninja_model
14
18
 
19
+ def has_many_with_ninja_model(association_id, options = {})
20
+ klass = options[:class_name] || association_id
21
+ klass = klass.to_s.camelize
22
+ klass = klass.singularize
23
+ klass = compute_type(klass)
24
+ if NinjaModel.ninja_model?(klass)
25
+ ninja_proxy.handle_association(:has_many, association_id, options.merge({:class_name => klass.name}))
26
+ else
27
+ has_many_without_ninja_model(association_id, options)
28
+ end
29
+ end
30
+ alias_method_chain :has_many, :ninja_model
31
+
15
32
  def reflect_on_association_with_ninja_model(association)
16
33
  if read_inheritable_attribute(:ninja_proxy) && ninja_proxy.proxy_klass.reflections.include?(association)
17
34
  ninja_proxy.proxy_klass.reflect_on_association(association)
@@ -47,8 +64,11 @@ module NinjaModel
47
64
  class Base
48
65
  class << self
49
66
  def has_one_with_active_record(association_id, options = {})
50
- if ninja_model?(:has_one, options[:class_name] || association_id)
51
- has_one_without_active_record(association_id, options)
67
+ klass = options[:class_name] || association_id
68
+ klass = klass.to_s.camelize
69
+ klass = compute_type(klass)
70
+ if NinjaModel.ninja_model?(klass)
71
+ has_one_without_active_record(association_id, options.merge(:class_name => klass.name.underscore))
52
72
  else
53
73
  proxy.handle_association(:has_one, association_id, options)
54
74
  end
@@ -57,8 +77,11 @@ module NinjaModel
57
77
  alias_method_chain :has_one, :active_record
58
78
 
59
79
  def belongs_to_with_active_record(association_id, options = {})
60
- if ninja_model?(:belongs_to, options[:class_name] || association_id)
61
- belongs_to_without_active_record(association_id, options)
80
+ klass = options[:class_name] || association_id
81
+ klass = klass.to_s.camelize
82
+ klass = compute_type(klass)
83
+ if NinjaModel.ninja_model?(klass)
84
+ belongs_to_without_active_record(association_id, options.merge(:class_name => klass.name.underscore))
62
85
  else
63
86
  proxy.handle_association(:belongs_to, association_id, options)
64
87
  end
@@ -67,8 +90,11 @@ module NinjaModel
67
90
  alias_method_chain :belongs_to, :active_record
68
91
 
69
92
  def has_many_with_active_record(association_id, options = {})
70
- if ninja_model?(:has_many, association_id)
71
- has_many_without_active_record(association_id, options)
93
+ klass = options[:class_name] || association_id
94
+ klass = klass.to_s.camelize.singularize
95
+ klass = compute_type(klass)
96
+ if NinjaModel.ninja_model?(klass)
97
+ has_many_without_active_record(association_id, options.merge(:class_name => klass.name.underscore))
72
98
  else
73
99
  proxy.handle_association(:has_many, association_id, options)
74
100
  end
@@ -120,6 +146,17 @@ module NinjaModel
120
146
  def self.column(name, sql_type = nil, default = nil)
121
147
  self.columns << ActiveRecord::ConnectionAdapters::Column.new(name, nil, sql_type.to_s, default)
122
148
  end
149
+
150
+ def self.columns_hash
151
+ h = {}
152
+ self.columns.each do |c|
153
+ h[c.name] = c
154
+ end
155
+ h
156
+ end
157
+ def self.column_defaults
158
+ self.columns_hash
159
+ end
123
160
  end
124
161
 
125
162
  @klass.model_attributes.each do |attr|
@@ -145,7 +182,7 @@ module NinjaModel
145
182
  private
146
183
 
147
184
  def derive_foreign_key
148
- "#{@klass.name.underscore}_id".to_sym
185
+ "#{@klass.name.demodulize.underscore}_id".to_sym
149
186
  end
150
187
  end
151
188
 
@@ -163,7 +200,7 @@ module NinjaModel
163
200
  end
164
201
  end
165
202
 
166
- @proxy_klass = active_record.parent.const_set("#{@klass.model_name}Proxy", Class.new(NinjaModel::Base))
203
+ @proxy_klass = active_record.parent.const_set("#{@klass.model_name.demodulize}Proxy", Class.new(NinjaModel::Base))
167
204
 
168
205
  @klass.columns_hash.each_pair do |k,v|
169
206
  @proxy_klass.send :attribute, k, v.type, v.default, @proxy_klass
@@ -188,7 +225,7 @@ module NinjaModel
188
225
  private
189
226
 
190
227
  def derive_foreign_key
191
- "#{@klass.name.underscore}_id".to_sym
228
+ "#{@klass.name.demodulize.underscore}_id".to_sym
192
229
  end
193
230
  end
194
231
  end
@@ -7,7 +7,9 @@ module NinjaModel
7
7
  "NinjaModel::Adapters::AdapterManagement"
8
8
 
9
9
  initializer 'ninja_model.logger' do |app|
10
- NinjaModel::set_logger(Rails.logger)
10
+ if NinjaModel.logger.nil?
11
+ NinjaModel::set_logger(Rails.logger)
12
+ end
11
13
  end
12
14
 
13
15
  initializer 'ninja_model_extend_active_record' do |app|
@@ -17,7 +19,7 @@ module NinjaModel
17
19
  end
18
20
 
19
21
  initializer 'ninja_model_load_specs' do |app|
20
- config_path = File.join(app.paths.config.to_a.first, "ninja_model.yml")
22
+ config_path = File.join(app.paths['config'].to_a.first, "ninja_model.yml")
21
23
  if File.exists?(config_path)
22
24
  require 'erb'
23
25
  require 'yaml'
@@ -10,13 +10,6 @@ module NinjaModel
10
10
  reflection
11
11
  end
12
12
 
13
- def ninja_model?(macro, association)
14
- klass = association.to_s.camelize
15
- klass = klass.singularize unless [:has_one, :belongs_to].include?(macro)
16
- klass = klass.constantize
17
- defined?(klass) && klass.ancestors.include?(NinjaModel::Base)
18
- end
19
-
20
13
  def reflections
21
14
  read_inheritable_attribute(:reflections) || write_inheritable_attribute(:reflections, {})
22
15
  end
@@ -37,7 +30,7 @@ module NinjaModel
37
30
  attr_reader :ninja_model, :name, :macro, :options
38
31
 
39
32
  def klass
40
- @klass ||= class_name.constantize
33
+ @klass ||= class_name.camelize.constantize
41
34
  end
42
35
 
43
36
  def class_name
@@ -71,6 +64,7 @@ module NinjaModel
71
64
 
72
65
  def primary_key_name
73
66
  @primary_key_name ||= options[:foreign_key] || derive_primary_key_name
67
+ @primary_key_name
74
68
  end
75
69
 
76
70
  def association_foreign_key
@@ -103,7 +97,7 @@ module NinjaModel
103
97
  elsif options[:as]
104
98
  "#{options[:as]}_id"
105
99
  else
106
- ninja_model.name.foreign_key
100
+ ninja_model.name.demodulize.foreign_key
107
101
  end
108
102
  end
109
103
  end
@@ -11,6 +11,8 @@ module NinjaModel
11
11
  attr_reader :klass, :loaded
12
12
 
13
13
  attr_accessor :ordering, :predicates, :limit_value, :offset_value
14
+ attr_accessor :default_scoped
15
+ alias :default_scoped? :default_scoped
14
16
 
15
17
  alias :loaded? :loaded
16
18
 
@@ -20,6 +22,7 @@ module NinjaModel
20
22
  def initialize(klass)
21
23
  @klass = klass
22
24
  @loaded = false
25
+ @default_scoped = false
23
26
 
24
27
  SINGLE_VALUE_ATTRS.each do |v|
25
28
  instance_variable_set("@#{v}_value".to_sym, nil)
@@ -87,8 +90,8 @@ module NinjaModel
87
90
  def method_missing(method, *args, &block)
88
91
  if Array.method_defined?(method)
89
92
  to_a.send(method, *args, &block)
90
- elsif @klass.scopes[method]
91
- merge(@klass.send(method, *args, &block))
93
+ elsif @klass.singleton_class.respond_to?(method)
94
+ merge(@klass.singleton_class.send(method, *args, &block))
92
95
  elsif @klass.respond_to?(method)
93
96
  scoping { @klass.send(method, *args, &block) }
94
97
  else
@@ -1,3 +1,3 @@
1
1
  module NinjaModel
2
- VERSION = "0.6.2"
2
+ VERSION = "0.7.0"
3
3
  end
data/ninja-model.gemspec CHANGED
@@ -18,11 +18,14 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_dependency 'activerecord', '~> 3.0.3'
21
+ s.add_dependency 'activerecord', '~> 3.1.0'
22
+ s.add_dependency 'rake', '~> 0.9.2'
22
23
 
23
- s.add_development_dependency 'rspec', '~> 2.2.0'
24
- s.add_development_dependency 'mocha', '~> 0.9.8'
25
- s.add_development_dependency 'rcov', '~> 0.9.9'
26
- s.add_development_dependency 'nokogiri', '~> 1.4.4'
27
- s.add_development_dependency 'autotest', '~> 4.4.6'
24
+ s.add_development_dependency 'rspec', '~> 2.8.0'
25
+ s.add_development_dependency 'mocha', '~> 0.10.0'
26
+ s.add_development_dependency 'nokogiri', '~> 1.5.0'
27
+ s.add_development_dependency 'guard-rspec', '~> 0.5.10'
28
+ s.add_development_dependency 'libnotify', '~> 0.6.0'
29
+ s.add_development_dependency 'yard', '~> 0.7.4'
30
+ s.add_development_dependency 'redcarpet', '~> 2.0.0'
28
31
  end
@@ -59,24 +59,20 @@ describe NinjaModel::Adapters::AdapterPool do
59
59
  end
60
60
 
61
61
  describe 'clear_stale_cached_instances!' do
62
+ let(:thread) { mock('Thread') }
63
+ before { Thread.stubs(:list).returns([thread]) }
62
64
  it 'should reap any instances for dead threads' do
63
- @thread = mock('Thread') do
64
- stubs(:object_id).returns(Thread.current.object_id)
65
- stubs(:alive?).returns(false)
66
- end
67
- Thread.stubs(:list).returns([@thread])
68
- @inst = subject.instance
69
- subject.expects(:checkin).with(@inst)
65
+ thread.stubs(:alive?).returns(false)
66
+ inst = subject.instance
67
+ subject.instance_variable_set("@assigned_instances".to_sym, {thread.object_id => inst})
68
+ subject.expects(:checkin).with(inst)
70
69
  subject.send :clear_stale_cached_instances!
71
70
  end
72
71
  it 'should not reap instances for live threads' do
73
- @thread = mock('Thread') do
74
- stubs(:object_id).returns(Thread.current.object_id)
75
- stubs(:alive?).returns(true)
76
- end
77
- Thread.stubs(:list).returns([@thread])
78
- @inst = subject.instance
79
- subject.expects(:checkin).with(@inst).never
72
+ thread.stubs(:alive?).returns(true)
73
+ inst = subject.instance
74
+ subject.instance_variable_set("@assigned_instances".to_sym, {thread.object_id => inst})
75
+ subject.expects(:checkin).with(inst).never
80
76
  subject.send :clear_stale_cached_instances!
81
77
  end
82
78
  end
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe NinjaModel::Base do
4
+ class LintTester < NinjaModel::Base; end
5
+ subject { LintTester.new }
4
6
  it_should_behave_like "ActiveModel"
5
7
  before {
6
8
  @klass = Class.new(NinjaModel::Base)
@@ -12,11 +12,6 @@ describe NinjaModel::Reflection do
12
12
  subject { ReflectionModel }
13
13
  it { should respond_to(:create_reflection) }
14
14
 
15
- describe 'ninja_model?' do
16
- specify { NinjaModel::Base.ninja_model?(:has_one, :bare_model).should be_false }
17
- specify { NinjaModel::Base.ninja_model?(:has_one, :reflection_model).should be_true }
18
- end
19
-
20
15
  describe 'create_reflection' do
21
16
  it 'should store the reflections on the class' do
22
17
  @klass = Class.new(NinjaModel::Base)
@@ -4,8 +4,10 @@ describe NinjaModel do
4
4
  it { NinjaModel.should respond_to(:logger) }
5
5
 
6
6
  it 'should accept a logger' do
7
+ orig_logger = NinjaModel.logger
7
8
  logger = mock('logger')
8
9
  NinjaModel.set_logger(logger)
9
10
  NinjaModel.logger.should eql(logger)
11
+ NinjaModel.set_logger(orig_logger)
10
12
  end
11
13
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,10 @@
1
- require 'bundler/setup'
2
- Bundler.require(:default)
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter 'spec'
4
+ end
5
+ #Bundler.require(:default)
3
6
  require 'rspec/core'
7
+ require 'ninja-model'
4
8
 
5
9
  Dir[File.join(File.expand_path('../', __FILE__), 'support/**/*.rb')].each { |f| require f }
6
10
 
metadata CHANGED
@@ -1,129 +1,125 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ninja-model
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 6
9
- - 2
10
- version: 0.6.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Josh Williams
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-12-01 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-08 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activerecord
16
+ requirement: &18010860 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.1.0
22
+ type: :runtime
22
23
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: *18010860
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &18009460 !ruby/object:Gem::Requirement
24
28
  none: false
25
- requirements:
29
+ requirements:
26
30
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 1
29
- segments:
30
- - 3
31
- - 0
32
- - 3
33
- version: 3.0.3
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.2
34
33
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rspec
38
34
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: *18009460
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &18008360 !ruby/object:Gem::Requirement
40
39
  none: false
41
- requirements:
40
+ requirements:
42
41
  - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 7
45
- segments:
46
- - 2
47
- - 2
48
- - 0
49
- version: 2.2.0
42
+ - !ruby/object:Gem::Version
43
+ version: 2.8.0
50
44
  type: :development
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *18008360
47
+ - !ruby/object:Gem::Dependency
53
48
  name: mocha
49
+ requirement: &18007400 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.10.0
55
+ type: :development
54
56
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
57
+ version_requirements: *18007400
58
+ - !ruby/object:Gem::Dependency
59
+ name: nokogiri
60
+ requirement: &18006220 !ruby/object:Gem::Requirement
56
61
  none: false
57
- requirements:
62
+ requirements:
58
63
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 43
61
- segments:
62
- - 0
63
- - 9
64
- - 8
65
- version: 0.9.8
64
+ - !ruby/object:Gem::Version
65
+ version: 1.5.0
66
66
  type: :development
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: rcov
70
67
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
68
+ version_requirements: *18006220
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: &18005500 !ruby/object:Gem::Requirement
72
72
  none: false
73
- requirements:
73
+ requirements:
74
74
  - - ~>
75
- - !ruby/object:Gem::Version
76
- hash: 41
77
- segments:
78
- - 0
79
- - 9
80
- - 9
81
- version: 0.9.9
75
+ - !ruby/object:Gem::Version
76
+ version: 0.5.10
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *18005500
80
+ - !ruby/object:Gem::Dependency
81
+ name: libnotify
82
+ requirement: &18004480 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 0.6.0
82
88
  type: :development
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: nokogiri
86
89
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
90
+ version_requirements: *18004480
91
+ - !ruby/object:Gem::Dependency
92
+ name: yard
93
+ requirement: &17959740 !ruby/object:Gem::Requirement
88
94
  none: false
89
- requirements:
95
+ requirements:
90
96
  - - ~>
91
- - !ruby/object:Gem::Version
92
- hash: 15
93
- segments:
94
- - 1
95
- - 4
96
- - 4
97
- version: 1.4.4
97
+ - !ruby/object:Gem::Version
98
+ version: 0.7.4
98
99
  type: :development
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: autotest
102
100
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
101
+ version_requirements: *17959740
102
+ - !ruby/object:Gem::Dependency
103
+ name: redcarpet
104
+ requirement: &17958800 !ruby/object:Gem::Requirement
104
105
  none: false
105
- requirements:
106
+ requirements:
106
107
  - - ~>
107
- - !ruby/object:Gem::Version
108
- hash: 35
109
- segments:
110
- - 4
111
- - 4
112
- - 6
113
- version: 4.4.6
108
+ - !ruby/object:Gem::Version
109
+ version: 2.0.0
114
110
  type: :development
115
- version_requirements: *id006
111
+ prerelease: false
112
+ version_requirements: *17958800
116
113
  description: Pseudo-ORM for Ruby/Rails with an ActiveRecord-like interface
117
114
  email: theprime@codingprime.com
118
115
  executables: []
119
-
120
116
  extensions: []
121
-
122
117
  extra_rdoc_files: []
123
-
124
- files:
118
+ files:
125
119
  - .gitignore
120
+ - .rvmrc
126
121
  - Gemfile
122
+ - Guardfile
127
123
  - README.md
128
124
  - Rakefile
129
125
  - autotest/discover.rb
@@ -182,38 +178,35 @@ files:
182
178
  - spec/support/matchers/convert.rb
183
179
  homepage: http://github.com/t3hpr1m3/ninja-model.git
184
180
  licenses: []
185
-
186
181
  post_install_message:
187
182
  rdoc_options: []
188
-
189
- require_paths:
183
+ require_paths:
190
184
  - lib
191
- required_ruby_version: !ruby/object:Gem::Requirement
185
+ required_ruby_version: !ruby/object:Gem::Requirement
192
186
  none: false
193
- requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- hash: 3
197
- segments:
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ segments:
198
192
  - 0
199
- version: "0"
200
- required_rubygems_version: !ruby/object:Gem::Requirement
193
+ hash: 1842853919456186236
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
195
  none: false
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- hash: 3
206
- segments:
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ segments:
207
201
  - 0
208
- version: "0"
202
+ hash: 1842853919456186236
209
203
  requirements: []
210
-
211
204
  rubyforge_project: ninja-model
212
- rubygems_version: 1.7.2
205
+ rubygems_version: 1.8.10
213
206
  signing_key:
214
207
  specification_version: 3
215
208
  summary: Pseudo-ORM for Ruby
216
- test_files:
209
+ test_files:
217
210
  - spec/ninja_model/adapters/abstract_adapter_spec.rb
218
211
  - spec/ninja_model/adapters/adapter_manager_spec.rb
219
212
  - spec/ninja_model/adapters/adapter_pool_spec.rb