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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 108844ab57297d801454b173b171d8cc7205e9b5adb9b2aec228feea15410e2e
4
- data.tar.gz: 26accda077e4d0ae68766d010e88b75bc730c043397f1763a114d7ba64d39a08
3
+ metadata.gz: 11e3d3ae480b5f74f02fe1e44baa891c2b108d34c69119eed8e62762889a797d
4
+ data.tar.gz: a5d2688047ee8adaa81cf710224faea57dc8152d43ed043762725df2009cdec7
5
5
  SHA512:
6
- metadata.gz: de6e87fa4e0e97666e3c4164e45c0b640f70a345fc496cf4c85978ac5c2a907474dfc42ddc75a9e4dcd812dbf3dce4ef8fecee4edd80905877764d4866007dd4
7
- data.tar.gz: f01f516b037a730c969be90df8626a633bd1f76cdf453f3959a5293e84d864cfec716a839902e483f76033b7b26c34f2bd78efa98dee83890ddd88b15e2047a5
6
+ metadata.gz: '09fdd2c0ec98ba27959c9ce878395fb0560dc31662398f785f60b7e020aa5bcc4cb23f7e6f5d89ae5455c8b2f7020c0630645ee06bac99e49e1dd496e11433ee'
7
+ data.tar.gz: 975b4db4b8474d2c5748c198be25b41b91513113949b39853581df599796c12a16fe2225adbbcb2bf140a6fdbd22fddc54e60b824fb8af9a377443b49b90598a
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.bundle/
2
+ /.irb_history
2
3
  /.ruby-version
3
4
  /.yardoc
4
5
  /Gemfile.lock
@@ -8,3 +9,4 @@
8
9
  /pkg/
9
10
  /spec/reports/
10
11
  /tmp/
12
+ .DS_Store
@@ -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.0
11
- - 2.1
12
- - 2.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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 Cyril Kato
3
+ Copyright (c) 2015-2019 Cyril Kato
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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](http://rubini.us/)
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
- Execute & return the result:
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
- Prevent from side effects:
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](http://semver.org/).
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
- [![Sashite](http://sashite.com/img/sashite.png)](http://sashite.com/)
103
+ [![Sashite](https://pbs.twimg.com/profile_images/618485028322975744/PZ9qPuI__400x400.png)](https://sashite.com/)
data/Rakefile CHANGED
@@ -19,4 +19,4 @@ namespace :test do
19
19
  end
20
20
 
21
21
  task(:doc_stats) { ruby '-S yard stats' }
22
- task default: %i[test doc_stats]
22
+ task default: %i[test doc_stats rubocop]
@@ -1 +1 @@
1
- 0.1.3
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', '~> 1.16'
20
- spec.add_development_dependency 'rake', '~> 12.3'
21
- spec.add_development_dependency 'rubocop', '~> 0.58'
22
- spec.add_development_dependency 'simplecov', '~> 0.16'
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
@@ -3,6 +3,6 @@
3
3
 
4
4
  require 'bundler/setup'
5
5
  require 'aw'
6
-
7
6
  require 'irb'
7
+
8
8
  IRB.start
@@ -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
@@ -13,8 +13,8 @@ module Aw
13
13
  #
14
14
  # @return [#object_id] The result.
15
15
  def self.fork!(&block)
16
- Fork.new(*IO.pipe).call(&block)
16
+ Fork.new(*::IO.pipe).call(&block)
17
17
  end
18
18
  end
19
19
 
20
- require_relative File.join 'aw', 'fork'
20
+ require_relative File.join('aw', 'fork')
@@ -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
- result = yield
45
- Marshal.dump(result, write)
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.3
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: 2018-08-28 00:00:00.000000000 Z
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: '1.16'
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: '1.16'
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: '12.3'
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: '12.3'
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.58'
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.58'
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.16'
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.16'
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
- rubyforge_project:
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!