data_objects 0.9.5 → 0.9.6

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/Manifest.txt CHANGED
@@ -14,6 +14,7 @@ lib/data_objects/reader.rb
14
14
  lib/data_objects/result.rb
15
15
  lib/data_objects/support/pooling.rb
16
16
  lib/data_objects/transaction.rb
17
+ lib/data_objects/uri.rb
17
18
  lib/data_objects/version.rb
18
19
  spec/command_spec.rb
19
20
  spec/connection_spec.rb
data/Rakefile CHANGED
@@ -38,17 +38,52 @@ end
38
38
 
39
39
  # Specs
40
40
 
41
- desc 'Run specifications'
42
41
  Spec::Rake::SpecTask.new(:spec) do |t|
43
- t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
44
- t.spec_files = Pathname.glob(Pathname.new(__FILE__).dirname + 'spec/**/*_spec.rb')
42
+ t.spec_opts << '--format' << 'specdoc' << '--colour'
43
+ t.spec_opts << '--loadby' << 'random'
44
+ t.spec_files = Pathname.glob(ENV['FILES'] || 'spec/**/*_spec.rb')
45
+
46
+ begin
47
+ t.rcov = ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true
48
+ t.rcov_opts << '--exclude' << 'spec'
49
+ t.rcov_opts << '--text-summary'
50
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
51
+ rescue Exception
52
+ # rcov not installed
53
+ end
45
54
  end
46
55
 
47
56
  # JRuby
48
-
49
57
  namespace :jruby do
50
58
  desc "Install #{GEM_NAME} #{GEM_VERSION} with JRuby"
51
59
  task :install => [ :package ] do
52
60
  sh %{#{SUDO} jruby -S gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources}, :verbose => false
53
61
  end
54
62
  end
63
+
64
+ namespace :ci do
65
+
66
+ task :prepare do
67
+ rm_rf ROOT + "ci"
68
+ mkdir_p ROOT + "ci"
69
+ mkdir_p ROOT + "ci/doc"
70
+ mkdir_p ROOT + "ci/cyclomatic"
71
+ mkdir_p ROOT + "ci/token"
72
+ end
73
+
74
+ task :publish do
75
+ out = ENV['CC_BUILD_ARTIFACTS'] || "out"
76
+ mkdir_p out unless File.directory? out
77
+
78
+ mv "ci/rspec_report.html", "#{out}/rspec_report.html"
79
+ mv "ci/coverage", "#{out}/coverage"
80
+ end
81
+
82
+ task :spec => :prepare do
83
+ Rake::Task[:spec].invoke
84
+ mv ROOT + "coverage", ROOT + "ci/coverage"
85
+ end
86
+
87
+ end
88
+
89
+ task :ci => ["ci:spec"]
data/lib/data_objects.rb CHANGED
@@ -6,6 +6,7 @@ require 'extlib'
6
6
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'support', 'pooling'))
7
7
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'logger'))
8
8
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'connection'))
9
+ require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'uri'))
9
10
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'transaction'))
10
11
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'command'))
11
12
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'result'))
@@ -13,6 +14,10 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'read
13
14
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'field'))
14
15
  require File.expand_path(File.join(File.dirname(__FILE__), 'data_objects', 'quoting'))
15
16
 
17
+ if RUBY_PLATFORM =~ /java/
18
+ require 'do_jdbc'
19
+ end
20
+
16
21
  module DataObjects
17
22
  class LengthMismatchError < StandardError; end
18
23
 
@@ -1,4 +1,3 @@
1
- require 'addressable/uri'
2
1
  require 'set'
3
2
 
4
3
  begin
@@ -10,7 +9,7 @@ module DataObjects
10
9
  class Connection
11
10
 
12
11
  def self.new(uri)
13
- uri = uri.is_a?(String) ? Addressable::URI::parse(uri) : uri
12
+ uri = DataObjects::URI::parse(uri)
14
13
 
15
14
  if uri.scheme == 'jdbc'
16
15
  driver_name = uri.path.split(':').first
@@ -0,0 +1,29 @@
1
+ require 'addressable/uri'
2
+
3
+ module DataObjects
4
+ URI = Struct.new(:scheme, :user, :password, :host, :port, :specified_port, :path, :query, :fragment)
5
+
6
+ class URI
7
+ def self.parse(uri)
8
+ return uri if uri.kind_of?(self)
9
+ uri = Addressable::URI::parse(uri) unless uri.kind_of?(Addressable::URI)
10
+ self.new(uri.scheme, uri.user, uri.password, uri.host, uri.port, uri.specified_port, uri.path, uri.query, uri.fragment)
11
+ end
12
+
13
+ def to_s
14
+ string = ""
15
+ string << "#{scheme}://" if scheme
16
+ if user
17
+ string << "#{user}"
18
+ string << ":#{password}" if password
19
+ string << "@"
20
+ end
21
+ string << "#{host}" if host
22
+ string << ":#{specified_port}" if specified_port
23
+ string << path.to_s
24
+ string << "?#{query}" if query
25
+ string << "##{fragment}" if fragment
26
+ string
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module DataObjects
2
- VERSION = "0.9.5" unless defined?(DataObjects::VERSION)
2
+ VERSION = "0.9.6" unless defined?(DataObjects::VERSION)
3
3
  end
data/spec/command_spec.rb CHANGED
@@ -6,6 +6,10 @@ describe DataObjects::Command do
6
6
  @command = DataObjects::Command.new(@connection, 'SQL STRING')
7
7
  end
8
8
 
9
+ after do
10
+ @connection.close
11
+ end
12
+
9
13
  it "should assign the connection object to @connection" do
10
14
  @command.instance_variable_get("@connection").should == @connection
11
15
  end
@@ -5,6 +5,10 @@ describe DataObjects::Connection do
5
5
  @connection = DataObjects::Connection.new('mock://localhost')
6
6
  end
7
7
 
8
+ after do
9
+ @connection.release
10
+ end
11
+
8
12
  %w{dispose create_command}.each do |meth|
9
13
  it "should respond to ##{meth}" do
10
14
  @connection.should respond_to(meth.intern)
@@ -15,35 +19,12 @@ describe DataObjects::Connection do
15
19
  @connection.to_s.should == 'mock://localhost'
16
20
  end
17
21
 
18
- describe "getting inherited" do
19
- # HACK: Connections needs to exist under the DataObjects namespace?
20
- module DataObjects
21
- class MyConnection < DataObjects::Connection; end
22
- end
23
-
24
- it "should set the @connection_lock ivar to a Mutex" do
25
- DataObjects::MyConnection.instance_variable_get("@connection_lock").should_not be_nil
26
- DataObjects::MyConnection.instance_variable_get("@connection_lock").should be_kind_of(Mutex)
27
- end
28
-
29
- it "should set the @available_connections ivar to a Hash" do
30
- DataObjects::MyConnection.instance_variable_get("@available_connections").should_not be_nil
31
- DataObjects::MyConnection.instance_variable_get("@available_connections").should be_kind_of(Hash)
32
- end
33
-
34
- it "should set the @reserved_connections ivar to a Set" do
35
- DataObjects::MyConnection.instance_variable_get("@reserved_connections").should_not be_nil
36
- DataObjects::MyConnection.instance_variable_get("@reserved_connections").should be_kind_of(Set)
37
- end
38
- end
39
-
40
22
  describe "initialization" do
41
23
  it "should accept a regular connection uri as a String" do
42
24
  c = DataObjects::Connection.new('mock://localhost/database')
43
25
  # relying on the fact that mock connection sets @uri
44
26
  uri = c.instance_variable_get("@uri")
45
27
 
46
- uri.should be_kind_of(Addressable::URI)
47
28
  uri.scheme.should == 'mock'
48
29
  uri.host.should == 'localhost'
49
30
  uri.path.should == '/database'
@@ -52,32 +33,15 @@ describe DataObjects::Connection do
52
33
  it "should accept a connection uri as a Addressable::URI" do
53
34
  c = DataObjects::Connection.new(Addressable::URI::parse('mock://localhost/database'))
54
35
  # relying on the fact that mock connection sets @uri
55
- uri = c.instance_variable_get("@uri")
56
-
57
- uri.should be_kind_of(Addressable::URI)
58
- uri.to_s.should == 'mock://localhost/database'
59
- end
60
-
61
- it "should determine which DataObject adapter to use from the uri scheme" do
62
- DataObjects::Mock::Connection.should_receive(:__new)
63
- DataObjects::Connection.new('mock://localhost/database')
64
- end
65
-
66
- it "should determine which DataObject adapter to use from a JDBC URL scheme" do
67
- DataObjects::Mock::Connection.should_receive(:__new)
68
- DataObjects::Connection.new('jdbc:mock://localhost/database')
69
- end
70
-
71
- it "should acquire a connection" do
72
- uri = Addressable::URI.parse('mock://localhost/database')
73
- DataObjects::Mock::Connection.should_receive(:__new).with(uri)
74
-
75
- DataObjects::Connection.new(uri)
36
+ c.to_s.should == 'mock://localhost/database'
76
37
  end
77
38
 
78
39
  it "should return the Connection specified by the scheme" do
79
40
  c = DataObjects::Connection.new(Addressable::URI.parse('mock://localhost/database'))
80
41
  c.should be_kind_of(DataObjects::Mock::Connection)
42
+
43
+ c = DataObjects::Connection.new(Addressable::URI.parse('jdbc:mock://localhost/database'))
44
+ c.should be_kind_of(DataObjects::Mock::Connection)
81
45
  end
82
46
  end
83
47
  end
data/spec/reader_spec.rb CHANGED
@@ -13,6 +13,8 @@ describe DataObjects::Reader do
13
13
  reader.should respond_to(:next!)
14
14
  reader.should respond_to(:values)
15
15
  reader.should respond_to(:fields)
16
+
17
+ connection.close
16
18
  end
17
19
 
18
20
  end
data/spec/result_spec.rb CHANGED
@@ -18,6 +18,7 @@ describe DataObjects::Result do
18
18
 
19
19
  # The id of the inserted row.
20
20
  result.should respond_to(:insert_id)
21
+ connection.close
21
22
  end
22
23
 
23
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yehuda Katz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-26 00:00:00 -05:00
12
+ date: 2008-10-12 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -70,6 +70,7 @@ files:
70
70
  - lib/data_objects/result.rb
71
71
  - lib/data_objects/support/pooling.rb
72
72
  - lib/data_objects/transaction.rb
73
+ - lib/data_objects/uri.rb
73
74
  - lib/data_objects/version.rb
74
75
  - spec/command_spec.rb
75
76
  - spec/connection_spec.rb