aw 0.1.3 → 0.1.8
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 +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +4 -7
- data/LICENSE.md +1 -1
- data/README.md +11 -5
- data/Rakefile +1 -1
- data/VERSION.semver +1 -1
- data/aw.gemspec +4 -4
- data/bin/console +1 -1
- data/checksum/aw-0.1.3.gem.sha512 +1 -0
- data/checksum/aw-0.1.4.gem.sha512 +1 -0
- data/checksum/aw-0.1.5.gem.sha512 +1 -0
- data/checksum/aw-0.1.6.gem.sha512 +1 -0
- data/lib/aw.rb +2 -2
- data/lib/aw/fork.rb +17 -4
- metadata +15 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11e3d3ae480b5f74f02fe1e44baa891c2b108d34c69119eed8e62762889a797d
|
4
|
+
data.tar.gz: a5d2688047ee8adaa81cf710224faea57dc8152d43ed043762725df2009cdec7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09fdd2c0ec98ba27959c9ce878395fb0560dc31662398f785f60b7e020aa5bcc4cb23f7e6f5d89ae5455c8b2f7020c0630645ee06bac99e49e1dd496e11433ee'
|
7
|
+
data.tar.gz: 975b4db4b8474d2c5748c198be25b41b91513113949b39853581df599796c12a16fe2225adbbcb2bf140a6fdbd22fddc54e60b824fb8af9a377443b49b90598a
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -4,15 +4,12 @@ cache: bundler
|
|
4
4
|
before_install:
|
5
5
|
- gem install bundler
|
6
6
|
script:
|
7
|
-
- bundle exec rubocop
|
8
7
|
- bundle exec rake test
|
9
8
|
rvm:
|
10
|
-
- 2.
|
11
|
-
- 2.
|
12
|
-
- 2.
|
13
|
-
- 2.3
|
14
|
-
- 2.4
|
15
|
-
- 2.5
|
9
|
+
- 2.3.8
|
10
|
+
- 2.4.5
|
11
|
+
- 2.5.3
|
12
|
+
- 2.6.3
|
16
13
|
- ruby-head
|
17
14
|
- jruby-head
|
18
15
|
- rbx-3
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -19,7 +19,7 @@ Creates a subprocess to execute a block inside.
|
|
19
19
|
## Rubies
|
20
20
|
|
21
21
|
* [MRI](https://www.ruby-lang.org/)
|
22
|
-
* [Rubinius](
|
22
|
+
* [Rubinius](https://rubinius.com/)
|
23
23
|
|
24
24
|
## Installation
|
25
25
|
|
@@ -39,13 +39,13 @@ Or install it yourself as:
|
|
39
39
|
|
40
40
|
## Usage
|
41
41
|
|
42
|
-
|
42
|
+
It executes the block in a subprocess, and returns the result in the current process:
|
43
43
|
|
44
44
|
```ruby
|
45
45
|
Aw.fork! { 6 * 7 } # => 42
|
46
46
|
```
|
47
47
|
|
48
|
-
|
48
|
+
Of course, it prevents from side effects:
|
49
49
|
|
50
50
|
```ruby
|
51
51
|
arr = ['foo']
|
@@ -55,6 +55,12 @@ Aw.fork! { arr << 'FUU' } # => ["foo", "FUU"]
|
|
55
55
|
arr # => ["foo"]
|
56
56
|
```
|
57
57
|
|
58
|
+
Exceptions raised within the block are propagated:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
Aw.fork! { nil + 1 } # => NoMethodError (undefined method `+' for nil:NilClass)
|
62
|
+
```
|
63
|
+
|
58
64
|
## Security
|
59
65
|
|
60
66
|
As a basic form of security __Aw__ provides a set of SHA512 checksums for
|
@@ -70,7 +76,7 @@ example:
|
|
70
76
|
|
71
77
|
## Versioning
|
72
78
|
|
73
|
-
__Aw__ follows [Semantic Versioning 2.0](
|
79
|
+
__Aw__ follows [Semantic Versioning 2.0](https://semver.org/).
|
74
80
|
|
75
81
|
## Contributing
|
76
82
|
|
@@ -94,4 +100,4 @@ See `LICENSE.md` file.
|
|
94
100
|
|
95
101
|
This project is sponsored by:
|
96
102
|
|
97
|
-
[](https://sashite.com/)
|
data/Rakefile
CHANGED
data/VERSION.semver
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.8
|
data/aw.gemspec
CHANGED
@@ -16,9 +16,9 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
|
-
spec.add_development_dependency 'bundler', '~>
|
20
|
-
spec.add_development_dependency 'rake', '~>
|
21
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
22
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
19
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
20
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
21
|
+
spec.add_development_dependency 'rubocop', '~> 0.76'
|
22
|
+
spec.add_development_dependency 'simplecov', '~> 0.17'
|
23
23
|
spec.add_development_dependency 'yard', '~> 0.9'
|
24
24
|
end
|
data/bin/console
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
294ce3632dde78870391b104bfbf52e60c95f95d897bb35a1085aa0d6ca5d335db360fdb231c7901a5f3a4e552888929a7f4b8472cf5f0d9c2f0e86f0a50389c
|
@@ -0,0 +1 @@
|
|
1
|
+
45e77c7139991cb235955cd2815afbab237a73208cf066446e09f182af401d6b9c3770034c05bdf9caded95351c0508f869b0ff2496681c914f9f80d167d838f
|
@@ -0,0 +1 @@
|
|
1
|
+
ab4cd0b855ea49e690d67b742793dee8d31682cd0aa570bc0a15651217d87b32e7dc5a41cab7dddf56d492afe5f7ea85e5cd1982361b77686ece29abdd770df0
|
@@ -0,0 +1 @@
|
|
1
|
+
e419a0c5012219dc85b0b7c88ae7ac2c23a3b4b5fe25ca69b14299942a75cb0e3f593c4acb68ba3634c79f2ad7fc88bd6d151874ffcc8dad01c24c5d5bf5f12d
|
data/lib/aw.rb
CHANGED
data/lib/aw/fork.rb
CHANGED
@@ -8,6 +8,9 @@ module Aw
|
|
8
8
|
# @param read [IO] The read endpoint.
|
9
9
|
# @param write [IO] The write endpoint.
|
10
10
|
def initialize(read, write)
|
11
|
+
# Currently, not available on all platforms.
|
12
|
+
raise 'fork() unimplemented' unless ::Process.respond_to?(:fork)
|
13
|
+
|
11
14
|
@read = read
|
12
15
|
@write = write
|
13
16
|
end
|
@@ -29,10 +32,12 @@ module Aw
|
|
29
32
|
pid = fork_and_return_pid(&block)
|
30
33
|
write.close
|
31
34
|
result = read.read
|
32
|
-
Process.wait(pid)
|
35
|
+
::Process.wait(pid)
|
33
36
|
|
34
37
|
# rubocop:disable MarshalLoad
|
35
|
-
Marshal.load(result)
|
38
|
+
::Marshal.load(result).tap do |r|
|
39
|
+
raise r if r.is_a?(::Exception)
|
40
|
+
end
|
36
41
|
# rubocop:enable MarshalLoad
|
37
42
|
end
|
38
43
|
|
@@ -41,8 +46,16 @@ module Aw
|
|
41
46
|
def fork_and_return_pid
|
42
47
|
fork do
|
43
48
|
read.close
|
44
|
-
|
45
|
-
|
49
|
+
|
50
|
+
# rubocop:disable Lint/RescueException
|
51
|
+
begin
|
52
|
+
result = yield
|
53
|
+
rescue ::Exception
|
54
|
+
result = $ERROR_INFO
|
55
|
+
end
|
56
|
+
# rubocop:enable Lint/RescueException
|
57
|
+
|
58
|
+
::Marshal.dump(result, write)
|
46
59
|
exit!(0)
|
47
60
|
end
|
48
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rubocop
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.76'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.76'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: simplecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.17'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.17'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,6 +102,10 @@ files:
|
|
102
102
|
- checksum/aw-0.1.0.gem.sha512
|
103
103
|
- checksum/aw-0.1.1.gem.sha512
|
104
104
|
- checksum/aw-0.1.2.gem.sha512
|
105
|
+
- checksum/aw-0.1.3.gem.sha512
|
106
|
+
- checksum/aw-0.1.4.gem.sha512
|
107
|
+
- checksum/aw-0.1.5.gem.sha512
|
108
|
+
- checksum/aw-0.1.6.gem.sha512
|
105
109
|
- lib/aw.rb
|
106
110
|
- lib/aw/fork.rb
|
107
111
|
- pkg_checksum
|
@@ -124,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
128
|
- !ruby/object:Gem::Version
|
125
129
|
version: '0'
|
126
130
|
requirements: []
|
127
|
-
|
128
|
-
rubygems_version: 2.7.6
|
131
|
+
rubygems_version: 3.0.6
|
129
132
|
signing_key:
|
130
133
|
specification_version: 4
|
131
134
|
summary: Aw, fork!
|