em-files 0.2.2 → 0.2.3
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 +7 -0
- data/Gemfile +3 -3
- data/Gemfile.lock +53 -11
- data/LICENSE.txt +1 -1
- data/README.md +53 -52
- data/Rakefile +5 -13
- data/VERSION +1 -1
- data/em-files.gemspec +20 -19
- data/lib/em-files.rb +16 -6
- metadata +74 -71
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 62ff47859673a6926ae57bbdcda8ca008c6c984e
|
4
|
+
data.tar.gz: 63012e9ebab2c65fca2a46d8a3206881983b191f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4b42eb937b66da976d1287dd2dd01200c8ff0229dfe7f3738df7ed17b39ac124e84a088087719c7b28f623c22003a987a49f2ea853289b11f89886d56c1bbd9d
|
7
|
+
data.tar.gz: 8417c47d9eab4d9e02ecdf478b7b0fe767d89db5d23bbde324e7f66fbc08a18275d725d2a969120f1006c306f8a49d91947c64de9f3e8f307c164ace434397d6
|
data/Gemfile
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
|
-
gem "eventmachine", ">= 0
|
4
|
+
gem "eventmachine", ">= 0"
|
5
5
|
gem "hash-utils", ">= 0.14.0"
|
6
6
|
|
7
7
|
# Add dependencies to develop your gem here.
|
8
8
|
# Include everything needed to run rake, tests, features, etc.
|
9
9
|
group :development do
|
10
|
-
gem "bundler", "
|
11
|
-
gem "jeweler", "
|
10
|
+
gem "bundler", ">= 1.0.0"
|
11
|
+
gem "jeweler", ">= 1.5.2"
|
12
12
|
gem "riot", ">= 0.12.1"
|
13
13
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,24 +1,66 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
addressable (2.3.8)
|
5
|
+
builder (3.2.2)
|
6
|
+
descendants_tracker (0.0.4)
|
7
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
8
|
+
eventmachine (1.0.7)
|
9
|
+
faraday (0.9.1)
|
10
|
+
multipart-post (>= 1.2, < 3)
|
11
|
+
git (1.2.9.1)
|
12
|
+
github_api (0.12.3)
|
13
|
+
addressable (~> 2.3)
|
14
|
+
descendants_tracker (~> 0.0.4)
|
15
|
+
faraday (~> 0.8, < 0.10)
|
16
|
+
hashie (>= 3.3)
|
17
|
+
multi_json (>= 1.7.5, < 2.0)
|
18
|
+
nokogiri (~> 1.6.3)
|
19
|
+
oauth2
|
20
|
+
hash-utils (2.2.0)
|
21
|
+
ruby-version (>= 0.4.0)
|
22
|
+
hashie (3.4.2)
|
23
|
+
highline (1.7.2)
|
24
|
+
jeweler (2.0.1)
|
25
|
+
builder
|
26
|
+
bundler (>= 1.0)
|
9
27
|
git (>= 1.2.5)
|
28
|
+
github_api
|
29
|
+
highline (>= 1.6.15)
|
30
|
+
nokogiri (>= 1.5.10)
|
10
31
|
rake
|
11
|
-
|
12
|
-
|
32
|
+
rdoc
|
33
|
+
jwt (1.5.1)
|
34
|
+
mini_portile (0.6.2)
|
35
|
+
multi_json (1.11.2)
|
36
|
+
multi_xml (0.5.5)
|
37
|
+
multipart-post (2.0.0)
|
38
|
+
nokogiri (1.6.6.2)
|
39
|
+
mini_portile (~> 0.6.0)
|
40
|
+
oauth2 (1.0.0)
|
41
|
+
faraday (>= 0.8, < 0.10)
|
42
|
+
jwt (~> 1.0)
|
43
|
+
multi_json (~> 1.3)
|
44
|
+
multi_xml (~> 0.5)
|
45
|
+
rack (~> 1.2)
|
46
|
+
rack (1.6.4)
|
47
|
+
rake (10.4.2)
|
48
|
+
rdoc (4.2.0)
|
49
|
+
riot (0.12.7)
|
13
50
|
rr
|
14
|
-
rr (1.
|
51
|
+
rr (1.1.2)
|
52
|
+
ruby-version (0.4.3)
|
53
|
+
thread_safe (0.3.5)
|
15
54
|
|
16
55
|
PLATFORMS
|
17
56
|
ruby
|
18
57
|
|
19
58
|
DEPENDENCIES
|
20
|
-
bundler (
|
21
|
-
eventmachine
|
59
|
+
bundler (>= 1.0.0)
|
60
|
+
eventmachine
|
22
61
|
hash-utils (>= 0.14.0)
|
23
|
-
jeweler (
|
62
|
+
jeweler (>= 1.5.2)
|
24
63
|
riot (>= 0.12.1)
|
64
|
+
|
65
|
+
BUNDLED WITH
|
66
|
+
1.10.5
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,85 +1,86 @@
|
|
1
1
|
EventMachine Files
|
2
2
|
==================
|
3
3
|
|
4
|
-
**em-files** solve problem of blocking disk IO when operating with
|
4
|
+
**em-files** solve problem of blocking disk IO when operating with
|
5
5
|
large files. Use [EventMachine][4] for multiplexing reads and writes
|
6
6
|
to small blocks performed in standalone EM ticks. They speed down the
|
7
|
-
file IO operations of sure, but allow running other tasks with them
|
7
|
+
file IO operations of sure, but allow running other tasks with them
|
8
8
|
simultaneously (from EM point of view).
|
9
9
|
|
10
|
+
There is, of sure, question whethet this all has sense as `EM::defer` is availiable for handing these blocking tasks. But sometimes are situations, in which it's undesirable to do them in separate thread.
|
11
|
+
|
10
12
|
API is similar to classic Ruby file IO represented by [File][1] class.
|
11
13
|
See an example:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
```ruby
|
15
|
+
require "em-files"
|
16
|
+
EM::run do
|
17
|
+
EM::File::open("some_file.txt", "r") do |io|
|
18
|
+
io.read(1024) do |data| # writing works by very similar
|
19
|
+
# way, of sure
|
20
|
+
puts data
|
21
|
+
io.close()
|
22
|
+
# it's necessary to do it in block too, because reading
|
23
|
+
# is evented
|
20
24
|
end
|
21
25
|
end
|
22
|
-
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
23
29
|
Support of Ruby API is limited to `#open`, `#close`, `#read` and `#write`
|
24
30
|
methods only, so for special operations use simply:
|
25
31
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
32
|
+
```ruby
|
33
|
+
EM::File::open("some_file.txt", "r") do |io|
|
34
|
+
io.native # returns native Ruby File class object
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
30
38
|
### Special Uses
|
31
39
|
|
32
|
-
It's possible to use also another IO objects than `File` object by
|
40
|
+
It's possible to use also another IO objects than `File` object by
|
33
41
|
giving appropriate IO instance instead of filename to methods:
|
34
42
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
```ruby
|
44
|
+
require "em-files"
|
45
|
+
require "stringio"
|
46
|
+
|
47
|
+
io = StringIO::new
|
48
|
+
|
49
|
+
EM::run do
|
50
|
+
EM::File::open(io) do |io|
|
51
|
+
# some multiplexed operations
|
44
52
|
end
|
45
|
-
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
46
56
|
By this way you can also perform for example more time consuming
|
47
|
-
operations by simple way (if they can be processed in block manner)
|
57
|
+
operations by simple way (if they can be processed in block manner)
|
48
58
|
using filters:
|
49
59
|
|
50
|
-
|
51
|
-
|
60
|
+
```ruby
|
61
|
+
require "em-files"
|
62
|
+
require "zlib"
|
52
63
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
`#write` supports also copying data from another IO stream because it
|
62
|
-
uses `StringIO` internally. Simply give it IO object instead of
|
63
|
-
`String`. It will read it until EOF will occur.
|
64
|
+
zip = Zlib::Deflate::new
|
65
|
+
filter = Proc::new { |chunk| zip.deflate(chunk, Zlib::SYNC_FLUSH) }
|
66
|
+
data = "..." # some data bigger than big
|
67
|
+
|
68
|
+
EM::run do
|
69
|
+
EM::File::write(data, filter) # done in several ticks
|
70
|
+
end
|
71
|
+
```
|
64
72
|
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
`#write` supports also copying data from another IO stream because it
|
74
|
+
uses `StringIO` internally. Simply give it IO object instead of
|
75
|
+
`String`. It will read it until EOF will occur.
|
68
76
|
|
69
|
-
1. Fork it.
|
70
|
-
2. Create a branch (`git checkout -b 20101220-my-change`).
|
71
|
-
3. Commit your changes (`git commit -am "Added something"`).
|
72
|
-
4. Push to the branch (`git push origin 20101220-my-change`).
|
73
|
-
5. Create an [Issue][2] with a link to your branch.
|
74
|
-
6. Enjoy a refreshing Diet Coke and wait.
|
75
77
|
|
76
78
|
Copyright
|
77
79
|
---------
|
78
80
|
|
79
|
-
Copyright © 2011 [Martin
|
80
|
-
further details.
|
81
|
+
Copyright © 2011 – 2015 [Martin Poljak][3]. See `LICENSE.txt` for further details.
|
81
82
|
|
82
83
|
[1]: http://www.ruby-doc.org/core/classes/File.html
|
83
84
|
[2]: http://github.com/martinkozak/em-files/issues
|
84
|
-
[3]: http://www.
|
85
|
+
[3]: http://www.martinpoljak.net/
|
85
86
|
[4]: http://rubyeventmachine.com/
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'rubygems'
|
3
3
|
require 'bundler'
|
4
|
+
|
4
5
|
begin
|
5
6
|
Bundler.setup(:default, :development)
|
6
7
|
rescue Bundler::BundlerError => e
|
@@ -8,30 +9,21 @@ rescue Bundler::BundlerError => e
|
|
8
9
|
$stderr.puts "Run `bundle install` to install missing gems"
|
9
10
|
exit e.status_code
|
10
11
|
end
|
11
|
-
require 'rake'
|
12
12
|
|
13
|
+
require 'rake'
|
13
14
|
require 'jeweler'
|
15
|
+
|
14
16
|
Jeweler::Tasks.new do |gem|
|
15
17
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
16
18
|
gem.name = "em-files"
|
17
19
|
gem.homepage = "https://github.com/martinkozak/em-files"
|
18
20
|
gem.license = "MIT"
|
19
21
|
gem.summary = "Sequenced file reader and writer through EventMachine. Solves problem of blocking disk IO when operating with large files."
|
20
|
-
gem.email = "
|
21
|
-
gem.authors = ["Martin
|
22
|
+
gem.email = "martin@poljak.cz"
|
23
|
+
gem.authors = ["Martin Poljak"]
|
22
24
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
25
|
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
26
|
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
25
27
|
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
28
|
end
|
27
29
|
Jeweler::RubygemsDotOrgTasks.new
|
28
|
-
|
29
|
-
require 'rake/rdoctask'
|
30
|
-
Rake::RDocTask.new do |rdoc|
|
31
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
32
|
-
|
33
|
-
rdoc.rdoc_dir = 'rdoc'
|
34
|
-
rdoc.title = "qrpc #{version}"
|
35
|
-
rdoc.rdoc_files.include('README*')
|
36
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
37
|
-
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/em-files.gemspec
CHANGED
@@ -2,15 +2,17 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: em-files 0.2.3 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.2.
|
8
|
+
s.name = "em-files"
|
9
|
+
s.version = "0.2.3"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.authors = ["Martin Poljak"]
|
14
|
+
s.date = "2015-07-18"
|
15
|
+
s.email = "martin@poljak.cz"
|
14
16
|
s.extra_rdoc_files = [
|
15
17
|
"LICENSE.txt",
|
16
18
|
"README.md"
|
@@ -27,33 +29,32 @@ Gem::Specification.new do |s|
|
|
27
29
|
"lib/em-files.rb",
|
28
30
|
"test.rb"
|
29
31
|
]
|
30
|
-
s.homepage =
|
32
|
+
s.homepage = "https://github.com/martinkozak/em-files"
|
31
33
|
s.licenses = ["MIT"]
|
32
|
-
s.
|
33
|
-
s.
|
34
|
-
s.summary = %q{Sequenced file reader and writer through EventMachine. Solves problem of blocking disk IO when operating with large files.}
|
34
|
+
s.rubygems_version = "2.4.5"
|
35
|
+
s.summary = "Sequenced file reader and writer through EventMachine. Solves problem of blocking disk IO when operating with large files."
|
35
36
|
|
36
37
|
if s.respond_to? :specification_version then
|
37
|
-
s.specification_version =
|
38
|
+
s.specification_version = 4
|
38
39
|
|
39
40
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
40
|
-
s.add_runtime_dependency(%q<eventmachine>, [">= 0
|
41
|
+
s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
|
41
42
|
s.add_runtime_dependency(%q<hash-utils>, [">= 0.14.0"])
|
42
|
-
s.add_development_dependency(%q<bundler>, ["
|
43
|
-
s.add_development_dependency(%q<jeweler>, ["
|
43
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
44
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
|
44
45
|
s.add_development_dependency(%q<riot>, [">= 0.12.1"])
|
45
46
|
else
|
46
|
-
s.add_dependency(%q<eventmachine>, [">= 0
|
47
|
+
s.add_dependency(%q<eventmachine>, [">= 0"])
|
47
48
|
s.add_dependency(%q<hash-utils>, [">= 0.14.0"])
|
48
|
-
s.add_dependency(%q<bundler>, ["
|
49
|
-
s.add_dependency(%q<jeweler>, ["
|
49
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
50
|
+
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
50
51
|
s.add_dependency(%q<riot>, [">= 0.12.1"])
|
51
52
|
end
|
52
53
|
else
|
53
|
-
s.add_dependency(%q<eventmachine>, [">= 0
|
54
|
+
s.add_dependency(%q<eventmachine>, [">= 0"])
|
54
55
|
s.add_dependency(%q<hash-utils>, [">= 0.14.0"])
|
55
|
-
s.add_dependency(%q<bundler>, ["
|
56
|
-
s.add_dependency(%q<jeweler>, ["
|
56
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
57
|
+
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
57
58
|
s.add_dependency(%q<riot>, [">= 0.12.1"])
|
58
59
|
end
|
59
60
|
end
|
data/lib/em-files.rb
CHANGED
@@ -39,6 +39,7 @@ module EM
|
|
39
39
|
# @param [Integer] rwsize size of block operated during one tick
|
40
40
|
# @param [Proc] block syntactic sugar for wrapping File access object
|
41
41
|
# @return [File] file access object
|
42
|
+
# @yield [File] file access object
|
42
43
|
#
|
43
44
|
|
44
45
|
def self.open(filepath, mode = "r", rwsize = self::RWSIZE, &block) # 64 kilobytes
|
@@ -46,7 +47,7 @@ module EM
|
|
46
47
|
|
47
48
|
file = self::new(filepath, mode, rwsize)
|
48
49
|
if not block.nil?
|
49
|
-
|
50
|
+
yield file
|
50
51
|
end
|
51
52
|
|
52
53
|
return file
|
@@ -62,6 +63,7 @@ module EM
|
|
62
63
|
# @param [Proc] filter filter which for postprocessing each
|
63
64
|
# read chunk
|
64
65
|
# @param [Proc] block block for giving back the result
|
66
|
+
# @yield [String] read data
|
65
67
|
#
|
66
68
|
|
67
69
|
|
@@ -70,7 +72,7 @@ module EM
|
|
70
72
|
self::open(filepath, "rb", rwsize) do |io|
|
71
73
|
io.read(nil, filter) do |out|
|
72
74
|
io.close()
|
73
|
-
|
75
|
+
yield out
|
74
76
|
end
|
75
77
|
end
|
76
78
|
end
|
@@ -87,6 +89,7 @@ module EM
|
|
87
89
|
# written chunk
|
88
90
|
# @param [Proc] block block called when writing is finished with
|
89
91
|
# written bytes size count as parameter
|
92
|
+
# @yield [Integer] really written data length
|
90
93
|
#
|
91
94
|
|
92
95
|
def self.write(filepath, data = "", rwsize = self::RWSIZE, filter = nil, &block)
|
@@ -94,7 +97,9 @@ module EM
|
|
94
97
|
self::open(filepath, "wb", rwsize) do |io|
|
95
98
|
io.write(data, filter) do |length|
|
96
99
|
io.close()
|
97
|
-
block.
|
100
|
+
if not block.nil?
|
101
|
+
yield length
|
102
|
+
end
|
98
103
|
end
|
99
104
|
end
|
100
105
|
end
|
@@ -161,10 +166,12 @@ module EM
|
|
161
166
|
# @param [Proc] filter filter which for postprocessing each
|
162
167
|
# read chunk
|
163
168
|
# @param [Proc] block callback for returning the result
|
169
|
+
# @yield [String] read data
|
164
170
|
# @overload read(&block)
|
165
171
|
# Reads whole content of file.
|
166
172
|
# @param [Proc] filter filter which for processing each block
|
167
173
|
# @param [Proc] block callback for returning the result
|
174
|
+
# @yield [String] read data
|
168
175
|
#
|
169
176
|
|
170
177
|
def read(length = nil, filter = nil, &block)
|
@@ -211,7 +218,7 @@ module EM
|
|
211
218
|
# Returns or continues work
|
212
219
|
if @native.eof? or (buffer.length == length)
|
213
220
|
if not block.nil?
|
214
|
-
|
221
|
+
yield buffer # returns result
|
215
222
|
end
|
216
223
|
else
|
217
224
|
EM::next_tick { worker.call() } # continues work
|
@@ -232,7 +239,9 @@ module EM
|
|
232
239
|
|
233
240
|
##
|
234
241
|
# Writes data to file. Supports writing both strings or copying
|
235
|
-
# from another IO object.
|
242
|
+
# from another IO object. Returns length of written data to
|
243
|
+
# callback if filename given or current position of output
|
244
|
+
# string if IO used.
|
236
245
|
#
|
237
246
|
# It will reopen the file if +EBADF: Bad file descriptor+ of
|
238
247
|
# +File+ class IO object will occur on +File+ object.
|
@@ -242,6 +251,7 @@ module EM
|
|
242
251
|
# written chunk
|
243
252
|
# @param [Proc] block callback called when finish and for giving
|
244
253
|
# back the length of written data
|
254
|
+
# @yield [Integer] length of really written data
|
245
255
|
#
|
246
256
|
|
247
257
|
def write(data, filter = nil, &block)
|
@@ -277,7 +287,7 @@ module EM
|
|
277
287
|
# Returns or continues work
|
278
288
|
if io.eof?
|
279
289
|
if not block.nil?
|
280
|
-
|
290
|
+
yield pos # returns result
|
281
291
|
end
|
282
292
|
else
|
283
293
|
EM::next_tick { worker.call() } # continues work
|
metadata
CHANGED
@@ -1,84 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-files
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.3
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
-
|
6
|
+
authors:
|
7
|
+
- Martin Poljak
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2015-07-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
17
14
|
name: eventmachine
|
18
|
-
requirement:
|
19
|
-
|
20
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
21
17
|
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
24
20
|
type: :runtime
|
25
21
|
prerelease: false
|
26
|
-
version_requirements:
|
27
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
28
|
name: hash-utils
|
29
|
-
requirement:
|
30
|
-
|
31
|
-
requirements:
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
32
31
|
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
32
|
+
- !ruby/object:Gem::Version
|
34
33
|
version: 0.14.0
|
35
34
|
type: :runtime
|
36
35
|
prerelease: false
|
37
|
-
version_requirements:
|
38
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.14.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
39
42
|
name: bundler
|
40
|
-
requirement:
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
- !ruby/object:Gem::Version
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
45
47
|
version: 1.0.0
|
46
48
|
type: :development
|
47
49
|
prerelease: false
|
48
|
-
version_requirements:
|
49
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
50
56
|
name: jeweler
|
51
|
-
requirement:
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
- !ruby/object:Gem::Version
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
56
61
|
version: 1.5.2
|
57
62
|
type: :development
|
58
63
|
prerelease: false
|
59
|
-
version_requirements:
|
60
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.5.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
61
70
|
name: riot
|
62
|
-
requirement:
|
63
|
-
|
64
|
-
requirements:
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
65
73
|
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
74
|
+
- !ruby/object:Gem::Version
|
67
75
|
version: 0.12.1
|
68
76
|
type: :development
|
69
77
|
prerelease: false
|
70
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.12.1
|
71
83
|
description:
|
72
|
-
email:
|
84
|
+
email: martin@poljak.cz
|
73
85
|
executables: []
|
74
|
-
|
75
86
|
extensions: []
|
76
|
-
|
77
|
-
extra_rdoc_files:
|
87
|
+
extra_rdoc_files:
|
78
88
|
- LICENSE.txt
|
79
89
|
- README.md
|
80
|
-
files:
|
81
|
-
- .document
|
90
|
+
files:
|
91
|
+
- ".document"
|
82
92
|
- Gemfile
|
83
93
|
- Gemfile.lock
|
84
94
|
- LICENSE.txt
|
@@ -88,36 +98,29 @@ files:
|
|
88
98
|
- em-files.gemspec
|
89
99
|
- lib/em-files.rb
|
90
100
|
- test.rb
|
91
|
-
has_rdoc: true
|
92
101
|
homepage: https://github.com/martinkozak/em-files
|
93
|
-
licenses:
|
102
|
+
licenses:
|
94
103
|
- MIT
|
104
|
+
metadata: {}
|
95
105
|
post_install_message:
|
96
106
|
rdoc_options: []
|
97
|
-
|
98
|
-
require_paths:
|
107
|
+
require_paths:
|
99
108
|
- lib
|
100
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
-
|
102
|
-
requirements:
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
103
111
|
- - ">="
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
version: "0"
|
109
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
|
-
requirements:
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
112
116
|
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version:
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
115
119
|
requirements: []
|
116
|
-
|
117
120
|
rubyforge_project:
|
118
|
-
rubygems_version:
|
121
|
+
rubygems_version: 2.4.5
|
119
122
|
signing_key:
|
120
|
-
specification_version:
|
121
|
-
summary: Sequenced file reader and writer through EventMachine. Solves problem of
|
123
|
+
specification_version: 4
|
124
|
+
summary: Sequenced file reader and writer through EventMachine. Solves problem of
|
125
|
+
blocking disk IO when operating with large files.
|
122
126
|
test_files: []
|
123
|
-
|