spawnling 2.1.5 → 2.1.6
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.
- data/README.md +6 -3
- data/lib/patches.rb +5 -3
- data/lib/spawnling.rb +6 -2
- data/lib/spawnling/version.rb +1 -1
- metadata +61 -31
- checksums.yaml +0 -7
data/README.md
CHANGED
@@ -96,13 +96,16 @@ The options you can pass to spawn are:
|
|
96
96
|
<tr><td>:kill</td><td>boolean value indicating whether the parent should kill the spawned process
|
97
97
|
when it exits (only valid when :method => :fork)</td></tr>
|
98
98
|
<tr><td>:argv</td><td>string to override the process name</td></tr>
|
99
|
+
<tr><td>:detach</td><td>boolean value indicating whether the parent should Process.detach the
|
100
|
+
spawned processes. (defaults to true). You *must* Spawnling.wait or Process.wait if you use this.
|
101
|
+
Changing this allows you to wait for the first child to exit instead of waiting for all of them.</td></tr>
|
99
102
|
</table>
|
100
103
|
|
101
104
|
Any option to spawn can be set as a default so that you don't have to pass them in
|
102
105
|
to every call of spawn. To configure the spawn default options, add a line to
|
103
106
|
your configuration file(s) like this:
|
104
107
|
```ruby
|
105
|
-
Spawnling
|
108
|
+
Spawnling::default_options :method => :thread
|
106
109
|
```
|
107
110
|
If you don't set any default options, the :method will default to :fork. To
|
108
111
|
specify different values for different environments, add the default_options call to
|
@@ -110,9 +113,9 @@ he appropriate environment file (development.rb, test.rb). For testing you can
|
|
110
113
|
the default :method to :yield so that the code is run inline.
|
111
114
|
```ruby
|
112
115
|
# in environment.rb
|
113
|
-
Spawnling
|
116
|
+
Spawnling::default_options :method => :fork, :nice => 7
|
114
117
|
# in test.rb, will override the environment.rb setting
|
115
|
-
Spawnling
|
118
|
+
Spawnling::default_options :method => :yield
|
116
119
|
```
|
117
120
|
This allows you to set your production and development environments to use different
|
118
121
|
methods according to your needs.
|
data/lib/patches.rb
CHANGED
@@ -134,8 +134,10 @@ if need_passenger_patch
|
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
-
|
138
|
-
|
139
|
-
::ActiveSupport::Cache::MemCacheStore
|
137
|
+
class SpawnlingCache < Rails::Railtie
|
138
|
+
initializer "cache" do
|
139
|
+
if defined?(::ActiveSupport::Cache::MemCacheStore) && Rails.cache.class.name == 'ActiveSupport::Cache::MemCacheStore'
|
140
|
+
::ActiveSupport::Cache::MemCacheStore.delegate :reset, :to => :@data
|
141
|
+
end
|
140
142
|
end
|
141
143
|
end
|
data/lib/spawnling.rb
CHANGED
@@ -16,7 +16,8 @@ class Spawnling
|
|
16
16
|
:method => ((RUBY_PLATFORM =~ /(win32|mingw32|java)/) ? :thread : :fork),
|
17
17
|
:nice => nil,
|
18
18
|
:kill => false,
|
19
|
-
:argv => nil
|
19
|
+
:argv => nil,
|
20
|
+
:detach => true
|
20
21
|
}
|
21
22
|
|
22
23
|
# things to close in child process
|
@@ -46,6 +47,9 @@ class Spawnling
|
|
46
47
|
# :kill => whether or not the parent process will kill the
|
47
48
|
# spawned child process when the parent exits
|
48
49
|
# :argv => changes name of the spawned process as seen in ps
|
50
|
+
# :detach => whether or not Process.detach is called for spawned child
|
51
|
+
# processes. You must wait for children on your own if you
|
52
|
+
# set this to false
|
49
53
|
def self.default_options(options = {})
|
50
54
|
@@default_options.merge!(options)
|
51
55
|
@@logger.info "spawn> default options = #{options.inspect}" if @@logger
|
@@ -199,7 +203,7 @@ class Spawnling
|
|
199
203
|
end
|
200
204
|
|
201
205
|
# detach from child process (parent may still wait for detached process if they wish)
|
202
|
-
Process.detach(child)
|
206
|
+
Process.detach(child) if options[:detach]
|
203
207
|
|
204
208
|
# remove dead children from the target list to avoid memory leaks
|
205
209
|
@@punks.delete_if {|punk| !Spawn.alive?(punk)}
|
data/lib/spawnling/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spawnling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.6
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tom Anderson
|
@@ -9,142 +10,164 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2015-05-14 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: bundler
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
|
-
- -
|
20
|
+
- - ! '>='
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: '0'
|
21
23
|
type: :development
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
|
-
- -
|
28
|
+
- - ! '>='
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '0'
|
28
31
|
- !ruby/object:Gem::Dependency
|
29
32
|
name: rake
|
30
33
|
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
31
35
|
requirements:
|
32
|
-
- -
|
36
|
+
- - ! '>='
|
33
37
|
- !ruby/object:Gem::Version
|
34
38
|
version: '0'
|
35
39
|
type: :development
|
36
40
|
prerelease: false
|
37
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
38
43
|
requirements:
|
39
|
-
- -
|
44
|
+
- - ! '>='
|
40
45
|
- !ruby/object:Gem::Version
|
41
46
|
version: '0'
|
42
47
|
- !ruby/object:Gem::Dependency
|
43
48
|
name: rspec
|
44
49
|
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
45
51
|
requirements:
|
46
|
-
- -
|
52
|
+
- - ~>
|
47
53
|
- !ruby/object:Gem::Version
|
48
54
|
version: '2.0'
|
49
55
|
type: :development
|
50
56
|
prerelease: false
|
51
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
52
59
|
requirements:
|
53
|
-
- -
|
60
|
+
- - ~>
|
54
61
|
- !ruby/object:Gem::Version
|
55
62
|
version: '2.0'
|
56
63
|
- !ruby/object:Gem::Dependency
|
57
64
|
name: simplecov
|
58
65
|
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
59
67
|
requirements:
|
60
|
-
- -
|
68
|
+
- - ! '>='
|
61
69
|
- !ruby/object:Gem::Version
|
62
70
|
version: '0'
|
63
71
|
type: :development
|
64
72
|
prerelease: false
|
65
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
66
75
|
requirements:
|
67
|
-
- -
|
76
|
+
- - ! '>='
|
68
77
|
- !ruby/object:Gem::Version
|
69
78
|
version: '0'
|
70
79
|
- !ruby/object:Gem::Dependency
|
71
80
|
name: simplecov-rcov
|
72
81
|
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
73
83
|
requirements:
|
74
|
-
- -
|
84
|
+
- - ! '>='
|
75
85
|
- !ruby/object:Gem::Version
|
76
86
|
version: '0'
|
77
87
|
type: :development
|
78
88
|
prerelease: false
|
79
89
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
80
91
|
requirements:
|
81
|
-
- -
|
92
|
+
- - ! '>='
|
82
93
|
- !ruby/object:Gem::Version
|
83
94
|
version: '0'
|
84
95
|
- !ruby/object:Gem::Dependency
|
85
96
|
name: coveralls
|
86
97
|
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
87
99
|
requirements:
|
88
|
-
- -
|
100
|
+
- - ! '>='
|
89
101
|
- !ruby/object:Gem::Version
|
90
102
|
version: '0'
|
91
103
|
type: :development
|
92
104
|
prerelease: false
|
93
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
94
107
|
requirements:
|
95
|
-
- -
|
108
|
+
- - ! '>='
|
96
109
|
- !ruby/object:Gem::Version
|
97
110
|
version: '0'
|
98
111
|
- !ruby/object:Gem::Dependency
|
99
112
|
name: rails
|
100
113
|
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
101
115
|
requirements:
|
102
|
-
- -
|
116
|
+
- - ! '>='
|
103
117
|
- !ruby/object:Gem::Version
|
104
118
|
version: '0'
|
105
119
|
type: :development
|
106
120
|
prerelease: false
|
107
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
108
123
|
requirements:
|
109
|
-
- -
|
124
|
+
- - ! '>='
|
110
125
|
- !ruby/object:Gem::Version
|
111
126
|
version: '0'
|
112
127
|
- !ruby/object:Gem::Dependency
|
113
128
|
name: activerecord-nulldb-adapter
|
114
129
|
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
115
131
|
requirements:
|
116
|
-
- -
|
132
|
+
- - ! '>='
|
117
133
|
- !ruby/object:Gem::Version
|
118
134
|
version: '0'
|
119
135
|
type: :development
|
120
136
|
prerelease: false
|
121
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
122
139
|
requirements:
|
123
|
-
- -
|
140
|
+
- - ! '>='
|
124
141
|
- !ruby/object:Gem::Version
|
125
142
|
version: '0'
|
126
143
|
- !ruby/object:Gem::Dependency
|
127
144
|
name: dalli
|
128
145
|
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
129
147
|
requirements:
|
130
|
-
- -
|
148
|
+
- - ! '>='
|
131
149
|
- !ruby/object:Gem::Version
|
132
150
|
version: '0'
|
133
151
|
type: :development
|
134
152
|
prerelease: false
|
135
153
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
136
155
|
requirements:
|
137
|
-
- -
|
156
|
+
- - ! '>='
|
138
157
|
- !ruby/object:Gem::Version
|
139
158
|
version: '0'
|
140
|
-
description:
|
141
|
-
|
159
|
+
description: ! 'This plugin provides a ''Spawnling'' class to easily fork OR
|
160
|
+
|
142
161
|
thread long-running sections of code so that your application can return
|
162
|
+
|
143
163
|
results to your users more quickly. This plugin works by creating new database
|
164
|
+
|
144
165
|
connections in ActiveRecord::Base for the spawned block.
|
145
166
|
|
167
|
+
|
146
168
|
The plugin also patches ActiveRecord::Base to handle some known bugs when using
|
147
|
-
|
169
|
+
|
170
|
+
threads (see lib/patches.rb).'
|
148
171
|
email:
|
149
172
|
- tom@squeat.com
|
150
173
|
- michael+spawnling@noack.com.au
|
@@ -152,9 +175,9 @@ executables: []
|
|
152
175
|
extensions: []
|
153
176
|
extra_rdoc_files: []
|
154
177
|
files:
|
155
|
-
-
|
156
|
-
-
|
157
|
-
-
|
178
|
+
- .gitignore
|
179
|
+
- .rspec
|
180
|
+
- .travis.yml
|
158
181
|
- CHANGELOG
|
159
182
|
- Gemfile
|
160
183
|
- LICENSE
|
@@ -176,26 +199,33 @@ files:
|
|
176
199
|
homepage: http://github.com/tra/spawnling
|
177
200
|
licenses:
|
178
201
|
- MIT
|
179
|
-
metadata: {}
|
180
202
|
post_install_message:
|
181
203
|
rdoc_options: []
|
182
204
|
require_paths:
|
183
205
|
- lib
|
184
206
|
required_ruby_version: !ruby/object:Gem::Requirement
|
207
|
+
none: false
|
185
208
|
requirements:
|
186
|
-
- -
|
209
|
+
- - ! '>='
|
187
210
|
- !ruby/object:Gem::Version
|
188
211
|
version: '0'
|
212
|
+
segments:
|
213
|
+
- 0
|
214
|
+
hash: 1575267209978026361
|
189
215
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
|
+
none: false
|
190
217
|
requirements:
|
191
|
-
- -
|
218
|
+
- - ! '>='
|
192
219
|
- !ruby/object:Gem::Version
|
193
220
|
version: '0'
|
221
|
+
segments:
|
222
|
+
- 0
|
223
|
+
hash: 1575267209978026361
|
194
224
|
requirements: []
|
195
225
|
rubyforge_project:
|
196
|
-
rubygems_version:
|
226
|
+
rubygems_version: 1.8.23
|
197
227
|
signing_key:
|
198
|
-
specification_version:
|
228
|
+
specification_version: 3
|
199
229
|
summary: Easily fork OR thread long-running sections of code in Ruby
|
200
230
|
test_files:
|
201
231
|
- spec/spawn/spawn_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 46683af41ff0f9b4d4078d02a1009371670f1c0e
|
4
|
-
data.tar.gz: 114aa427aabb0bfc096967528b53fb1ca6a2aed8
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: fefb1f49fa3a27b0b3fd8d5d645738fe27623881e01e804946e4c9645231443067fea45df43e26be5f5f92b4626165dbf81f22e510f3809a1b22b9946a72745a
|
7
|
-
data.tar.gz: 8601bbf865be9fac8277b402d25418e4125305d0bd01b573f86a0a67bbabd2f429f9bb08bd2e8c49eb6fbd714c00339a209e84ba76a911717398050d0b1e9f4a
|