aw 0.1.3 → 0.1.8

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