mdb 0.3.2 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55c6c7c1cdcb9921dfebf67418cd17e2fdac1bb1
4
- data.tar.gz: ddc03a93b64636f6db253f639e49030429864c11
3
+ metadata.gz: 6e145baf40a7c85a8b744fe0473673c9107f2286
4
+ data.tar.gz: 121f225d8c3c3fb584c3b0531571a6afa1cb89c5
5
5
  SHA512:
6
- metadata.gz: 2b456701c7e7d5868ffe856f5b3330a551d357e52b63e902b40f903dcdf64f0fdcbba8c0a5a0c62695164ff050dbb5cb8f32c4873d3340e8caf7dfba1ed7ae8f
7
- data.tar.gz: 6186198dc546f16abea449e60e384e941be21339174c655b467e7e9df609062a1376296f5be7610c74b058e354151caf0a9e70767d75d0974d7ebd8299edbf3c
6
+ metadata.gz: 8f08fe3139630d3d2dbe76a82123de4c2eec51df9457ffbb44af0b86005f47a6a9a62523e5b8510edc4be39c6ec93e98af0cf1f01c0461496a44153a42e1ff88
7
+ data.tar.gz: a13524dd57c47525ec1bddd5dfad2dd2e0a5045e87182b07f239930f493a093d26578a21e021bc486ce8f50f467c04efb324bece87213746e2c3103aadb2f872
@@ -0,0 +1 @@
1
+ 2.3.1
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Mdb
2
2
 
3
- [![Build Status](https://travis-ci.org/concordia-publishing-house/mdb.png?branch=master)](https://travis-ci.org/concordia-publishing-house/mdb)
4
- [![Code Climate](https://codeclimate.com/github/concordia-publishing-house/mdb.png)](https://codeclimate.com/github/concordia-publishing-house/mdb)
3
+ [![Gem Version](https://badge.fury.io/rb/mdb.svg)](https://rubygems.org/gems/mdb)
4
+ [![Code Climate](https://codeclimate.com/github/cph/mdb.svg)](https://codeclimate.com/github/cph/mdb)
5
+ [![Build Status](https://travis-ci.org/cph/mdb.svg)](https://travis-ci.org/cph/mdb)
5
6
 
6
7
  Wraps [mdb-tools](https://github.com/brianb/mdbtools) for reading Microsoft Access databases
7
8
 
@@ -30,21 +30,16 @@ module Mdb
30
30
 
31
31
  def columns(table)
32
32
  open_csv(table) do |csv|
33
- line = csv.readline
34
- unless line || tables.member?(table.to_s)
35
- raise TableDoesNotExistError, "#{table.inspect} does not exist in #{file_name.inspect}"
36
- end
37
-
38
- (line || []).map(&:to_sym)
33
+ (csv.readline || []).map(&:to_sym)
39
34
  end
40
35
  end
41
36
 
42
37
 
43
38
 
44
- def read_csv(table)
45
- csv = execute "mdb-export -D '%F %T' -d \\| #{file_name} #{Shellwords.escape(table)}"
46
- empty_table!(table) if csv.empty?
47
- csv
39
+ def read_csv(table, &block)
40
+ table = table.to_s
41
+ raise TableDoesNotExistError, "#{table.inspect} does not exist in #{file_name.inspect}" unless tables.member?(table)
42
+ execute "mdb-export -D '%F %T' -d #{Shellwords.escape(delimiter)} #{file_name} #{Shellwords.escape(table)}", &block
48
43
  end
49
44
 
50
45
 
@@ -89,21 +84,11 @@ module Mdb
89
84
  end
90
85
  end
91
86
 
92
- empty_table!(table) if count == 0
93
-
94
87
  count
95
88
  end
96
89
 
97
90
 
98
91
 
99
- def empty_table!(table)
100
- raise MdbToolsNotInstalledError unless system("which mdb-export")
101
- raise TableDoesNotExistError, "#{table.inspect} does not exist in #{file_name.inspect}" if !tables.member?(table.to_s)
102
- raise Error, "An error occurred when reading #{table.inspect} in #{file_name.inspect}"
103
- end
104
-
105
-
106
-
107
92
  def file_name
108
93
  Shellwords.escape(file)
109
94
  end
@@ -111,8 +96,7 @@ module Mdb
111
96
 
112
97
 
113
98
  def open_csv(table)
114
- command = "mdb-export -D '%F %T' -d #{Shellwords.escape(delimiter)} #{file_name} #{Shellwords.escape(table)}"
115
- execute(command) do |file|
99
+ read_csv(table) do |file|
116
100
  yield CSV.new(file, col_sep: delimiter)
117
101
  end
118
102
  end
@@ -121,7 +105,10 @@ module Mdb
121
105
 
122
106
  def execute(command)
123
107
  file = Tempfile.new("mdb")
124
- system "#{command} > #{file.path} 2> /dev/null"
108
+ unless system "#{command} > #{file.path} 2> /dev/null"
109
+ raise MdbToolsNotInstalledError if $?.exitstatus == 127
110
+ raise Error, "#{command[/^\S+/]} exited with status #{$?.exitstatus}"
111
+ end
125
112
  return file.read unless block_given?
126
113
  yield file
127
114
  ensure
@@ -1,3 +1,3 @@
1
1
  module Mdb
2
- VERSION = "0.3.2"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rails", ">= 3.2.0", "< 4.1.0"
24
+ spec.add_development_dependency "shoulda-context"
24
25
  spec.add_development_dependency "turn"
25
26
  spec.add_development_dependency "pry"
26
27
  end
File without changes
File without changes
Binary file
@@ -41,6 +41,23 @@ class MdbTest < ActiveSupport::TestCase
41
41
  end
42
42
  end
43
43
 
44
+ context "without permission to read the file" do
45
+ setup do
46
+ system "chmod u-r #{File.dirname(__FILE__)}/data/Protected.mdb"
47
+ end
48
+
49
+ teardown do
50
+ system "chmod u+r #{File.dirname(__FILE__)}/data/Protected.mdb"
51
+ end
52
+
53
+ should "raise an exception if mdb-tools fails for other reasons" do
54
+ assert_raises(Mdb::Error) do
55
+ database = Mdb.open "#{File.dirname(__FILE__)}/data/Protected.mdb"
56
+ database.read :Actors
57
+ end
58
+ end
59
+ end
60
+
44
61
  test "should raise an exception if a table is not found" do
45
62
  database = Mdb.open "#{File.dirname(__FILE__)}/data/Example2000.mdb"
46
63
  assert_raises(Mdb::TableDoesNotExistError) do
@@ -1,5 +1,6 @@
1
1
  require "rails"
2
2
  require "rails/test_help"
3
+ require "shoulda/context"
3
4
  require "turn"
4
5
  require "pry"
5
6
  require "mdb"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Lail
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-05 00:00:00.000000000 Z
11
+ date: 2017-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,20 @@ dependencies:
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: 4.1.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: shoulda-context
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: turn
63
77
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,7 @@ extensions: []
94
108
  extra_rdoc_files: []
95
109
  files:
96
110
  - ".gitignore"
111
+ - ".ruby-version"
97
112
  - ".travis.yml"
98
113
  - Gemfile
99
114
  - LICENSE.txt
@@ -105,6 +120,7 @@ files:
105
120
  - mdb.gemspec
106
121
  - test/data/Example2000.mdb
107
122
  - test/data/Example2003.mdb
123
+ - test/data/Protected.mdb
108
124
  - test/database_test.rb
109
125
  - test/test_helper.rb
110
126
  homepage: ''
@@ -127,12 +143,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
143
  version: '0'
128
144
  requirements: []
129
145
  rubyforge_project:
130
- rubygems_version: 2.4.5.1
146
+ rubygems_version: 2.5.1
131
147
  signing_key:
132
148
  specification_version: 4
133
149
  summary: Wraps mdb-tools for reading and Microsoft Access databases (MDB)
134
150
  test_files:
135
151
  - test/data/Example2000.mdb
136
152
  - test/data/Example2003.mdb
153
+ - test/data/Protected.mdb
137
154
  - test/database_test.rb
138
155
  - test/test_helper.rb