purecdb 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []