purecdb 1.0.0 → 1.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fca6f6f647583ae3cc4025f677f80abb82599d85
4
+ data.tar.gz: 9f60409470e5fd6f85f05719db05abc4ad173d81
5
+ SHA512:
6
+ metadata.gz: 06322d92a058c1ea7ff4de8fe668d2713c14989c34025ca04c1686850484c391917e4f60a81e5a061ca27b0bbb3d8f9b80487cb064bdec7e74f206fde538a8ad
7
+ data.tar.gz: 3bf61f1a8a35f6958a909ca8cddd26dcb917257e3dfa9f5040175987a402dd2b6a153f3020dca283da2176410b2e7144f8bf10494711e9df10b648d6e894ac72
@@ -0,0 +1,12 @@
1
+ # -*- sh -*-
2
+ FROM ruby:2.2
3
+
4
+ RUN gem install -n /usr/bin bundler
5
+ RUN gem install -n /usr/bin rake
6
+
7
+ RUN apt-get update && apt-get install -y tinycdb && apt-get clean
8
+
9
+ ADD bundle_config /usr/local/bundle/config
10
+
11
+ WORKDIR /app
12
+
@@ -1,12 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- purecdb (0.1.0)
4
+ purecdb (1.1.0)
5
+ ffi-mmap
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  diff-lcs (1.2.5)
11
+ ffi (1.9.14)
12
+ ffi-mmap (0.2.0)
13
+ ffi
10
14
  json (1.8.3)
11
15
  rake (10.4.2)
12
16
  rdoc (4.2.2)
@@ -34,3 +38,6 @@ DEPENDENCIES
34
38
  rake (~> 10.0)
35
39
  rdoc
36
40
  rspec
41
+
42
+ BUNDLED WITH
43
+ 1.12.5
data/Makefile CHANGED
@@ -1,13 +1,5 @@
1
+ IMAGE=purecdb
1
2
 
2
- BX=bundle exec
3
+ include Rules.mk
3
4
 
4
- rdoc:
5
- rm -rf doc
6
- ${BX} rdoc --main=README.md -O -U -x'~' README.md lib
7
5
 
8
- .PHONY: spec
9
- spec:
10
- ${BX} rspec
11
-
12
- bundle:
13
- bundle install --path vendor/bundle
@@ -0,0 +1,33 @@
1
+ DR=docker run -t -i -v ${PWD}:/app ${IMAGE}
2
+ B=${DR} bundle
3
+ BE=${B} exec
4
+
5
+ build: container
6
+ echo Building gem
7
+ rm -f pkg/*
8
+ ${BE} rake build
9
+
10
+ push: build
11
+ gem push `/bin/ls -q pkg/* | tail -n1`
12
+
13
+ container: Dockerfile
14
+ docker build -t ${IMAGE} .
15
+
16
+ update: container
17
+ ${B} update
18
+
19
+ bundle: container
20
+ ${B} install --binstubs ./bin --path=./vendor/bundle
21
+
22
+ rdoc:
23
+ rm -rf doc
24
+ ${BE} rdoc --main=README.md -O -U -x'~' README.md lib
25
+
26
+ .PHONY: spec
27
+ spec:
28
+ ${BE} rspec ./spec
29
+
30
+
31
+ cli:
32
+ ${DR} /bin/bash -l
33
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ BUNDLE_PATH: "./vendor/bundle"
3
+ BUNDLE_DISABLE_SHARED_GEMS: true
@@ -1,3 +1,8 @@
1
+ begin
2
+ require 'ffi/mmap'
3
+ rescue LoadError
4
+ end
5
+
1
6
  module PureCDB
2
7
 
3
8
  #
@@ -15,10 +20,11 @@ module PureCDB
15
20
  # PureCDB::Reader.new(file, options) {|r| ... }
16
21
  #
17
22
  # +file+ can be a String or any object that meets the minimum
18
- # requirements, which means having #sysseek, #sysopen to and #sysclos
23
+ # requirements, which means having #sysseek, #sysopen to and #sysclose
19
24
  # which does not arbitrarily sttop access ot it.
20
25
  #
21
- # If Mmap is available, the code will attempt to use it.
26
+ # If Mmap is available, the code will attempt to use it if target is a
27
+ # filename
22
28
  #
23
29
  def initialize target, *options
24
30
  if target.is_a?(String)
@@ -41,7 +47,7 @@ module PureCDB
41
47
  raise "#{mode}bit mode detected in file; options request #{@mode}bit mode"
42
48
  end
43
49
 
44
- @m = Mmap.new(target,"r", Mmap::MAP_SHARED) rescue nil
50
+ @m = FFI::Mmap.new(target,"r", FFI::Mmap::MAP_SHARED) rescue nil
45
51
  read_hashes
46
52
 
47
53
  raise "Invalid File (Hashes are all empty)" if @hashes.uniq == [0]
@@ -53,6 +59,18 @@ module PureCDB
53
59
  end
54
60
  end
55
61
 
62
+ #
63
+ # Is the file mmap'ed? Note that this may in theory return true right after
64
+ # opening the file, but return false after attempting to read if the
65
+ # attempt to read from the mmap object fails for whatever reason.
66
+ #
67
+ # I'm not sure that can ever happen, but to be 100% sure, check *after* a
68
+ # lookup
69
+ #
70
+ def mmap?
71
+ @m.nil? == false
72
+ end
73
+
56
74
  #
57
75
  # Alternative to PureCDB::Reader.new(target,options) ..
58
76
  #
@@ -132,7 +150,6 @@ module PureCDB
132
150
 
133
151
  # Warning: This will be very slow if not mmap'd
134
152
  def read r
135
- @m = nil
136
153
  if @m
137
154
  res = @m[r]
138
155
  return res if res
@@ -1,3 +1,3 @@
1
1
  module PureCDB
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
24
24
  end
25
25
 
26
+ spec.add_dependency "ffi-mmap"
26
27
  spec.add_development_dependency "bundler", "~> 1.9"
27
28
  spec.add_development_dependency "rake", "~> 10.0"
28
29
  spec.add_development_dependency "rspec"
metadata CHANGED
@@ -1,78 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: purecdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Vidar Hokstad
9
8
  autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2016-07-05 00:00:00.000000000 Z
11
+ date: 2016-07-20 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi-mmap
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: bundler
16
29
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
30
  requirements:
19
- - - ~>
31
+ - - "~>"
20
32
  - !ruby/object:Gem::Version
21
33
  version: '1.9'
22
34
  type: :development
23
35
  prerelease: false
24
36
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
37
  requirements:
27
- - - ~>
38
+ - - "~>"
28
39
  - !ruby/object:Gem::Version
29
40
  version: '1.9'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rake
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ~>
45
+ - - "~>"
36
46
  - !ruby/object:Gem::Version
37
47
  version: '10.0'
38
48
  type: :development
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ~>
52
+ - - "~>"
44
53
  - !ruby/object:Gem::Version
45
54
  version: '10.0'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: rspec
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: rdoc
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  description: A Pure Ruby CDB reader/writer w/64 bit extensions
@@ -82,16 +87,19 @@ executables: []
82
87
  extensions: []
83
88
  extra_rdoc_files: []
84
89
  files:
85
- - .gitignore
86
- - .rspec
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - Dockerfile
87
93
  - Gemfile
88
94
  - Gemfile.lock
89
95
  - LICENSE
90
96
  - Makefile
91
97
  - README.md
92
98
  - Rakefile
99
+ - Rules.mk
93
100
  - bin/console
94
101
  - bin/setup
102
+ - bundle_config
95
103
  - lib/purecdb.rb
96
104
  - lib/purecdb/base.rb
97
105
  - lib/purecdb/reader.rb
@@ -100,26 +108,27 @@ files:
100
108
  - purecdb.gemspec
101
109
  homepage: https://github.com/hokstadconsulting/purecdb
102
110
  licenses: []
111
+ metadata:
112
+ allowed_push_host: 'TODO: Set to ''http://mygemserver.com'' to prevent pushes to
113
+ rubygems.org, or delete to allow pushes to any server.'
103
114
  post_install_message:
104
115
  rdoc_options: []
105
116
  require_paths:
106
117
  - lib
107
118
  required_ruby_version: !ruby/object:Gem::Requirement
108
- none: false
109
119
  requirements:
110
- - - ! '>='
120
+ - - ">="
111
121
  - !ruby/object:Gem::Version
112
122
  version: '0'
113
123
  required_rubygems_version: !ruby/object:Gem::Requirement
114
- none: false
115
124
  requirements:
116
- - - ! '>='
125
+ - - ">="
117
126
  - !ruby/object:Gem::Version
118
127
  version: '0'
119
128
  requirements: []
120
129
  rubyforge_project:
121
- rubygems_version: 1.8.23
130
+ rubygems_version: 2.6.6
122
131
  signing_key:
123
- specification_version: 3
132
+ specification_version: 4
124
133
  summary: A Pure Ruby CDB reader/writer w/64 bit extensions
125
134
  test_files: []