serf 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/.gitignore +21 -0
  2. data/.travis.yml +7 -0
  3. data/Gemfile +20 -26
  4. data/Guardfile +16 -0
  5. data/NOTICE.txt +1 -1
  6. data/README.md +223 -207
  7. data/Rakefile +3 -18
  8. data/lib/serf/builder.rb +31 -136
  9. data/lib/serf/errors/policy_failure.rb +10 -0
  10. data/lib/serf/middleware/error_handler.rb +53 -0
  11. data/lib/serf/middleware/parcel_freezer.rb +36 -0
  12. data/lib/serf/middleware/parcel_masher.rb +39 -0
  13. data/lib/serf/middleware/policy_checker.rb +31 -0
  14. data/lib/serf/middleware/uuid_tagger.rb +13 -11
  15. data/lib/serf/parcel_builder.rb +30 -0
  16. data/lib/serf/serfer.rb +27 -66
  17. data/lib/serf/util/error_handling.rb +13 -36
  18. data/lib/serf/util/protected_call.rb +2 -2
  19. data/lib/serf/util/uuidable.rb +14 -38
  20. data/lib/serf/version.rb +1 -1
  21. data/schemas/{caught_exception_event.json → serf/events/caught_error.json} +4 -7
  22. data/serf.gemspec +22 -101
  23. data/spec/serf/builder_spec.rb +44 -0
  24. data/spec/serf/errors/policy_failure_spec.rb +11 -0
  25. data/spec/serf/middleware/error_handler_spec.rb +48 -0
  26. data/spec/serf/middleware/parcel_freezer_spec.rb +20 -0
  27. data/spec/serf/middleware/parcel_masher_spec.rb +30 -0
  28. data/spec/serf/middleware/policy_checker_spec.rb +70 -0
  29. data/spec/serf/middleware/uuid_tagger_spec.rb +32 -0
  30. data/spec/serf/parcel_builder_spec.rb +46 -0
  31. data/spec/serf/serfer_spec.rb +61 -0
  32. data/spec/serf/util/error_handling_spec.rb +35 -0
  33. data/spec/serf/util/null_object_spec.rb +26 -0
  34. data/spec/serf/util/options_extraction_spec.rb +62 -0
  35. data/spec/serf/util/protected_call_spec.rb +33 -0
  36. data/spec/serf/util/uuidable_spec.rb +56 -0
  37. data/spec/serf_spec.rb +1 -4
  38. data/spec/spec_helper.rb +3 -0
  39. data/spec/support/error_handling_wrapper.rb +5 -0
  40. data/spec/support/factories.rb +32 -0
  41. data/spec/support/failing_policy.rb +9 -0
  42. data/spec/support/json_schema_tester.rb +14 -0
  43. data/spec/support/options_extraction_wrapper.rb +10 -0
  44. data/spec/support/passing_policy.rb +7 -0
  45. data/spec/support/protected_call_wrapper.rb +5 -0
  46. metadata +81 -131
  47. data/.document +0 -5
  48. data/.rspec +0 -1
  49. data/Gemfile.lock +0 -58
  50. data/docs/thread_pools.txt +0 -16
  51. data/lib/serf/command.rb +0 -79
  52. data/lib/serf/error.rb +0 -11
  53. data/lib/serf/errors/not_found.rb +0 -8
  54. data/lib/serf/middleware/girl_friday_async.rb +0 -39
  55. data/lib/serf/middleware/masherize.rb +0 -25
  56. data/lib/serf/routing/regexp_matcher.rb +0 -35
  57. data/lib/serf/routing/route.rb +0 -35
  58. data/lib/serf/routing/route_set.rb +0 -64
  59. data/schemas/message_accepted_event.json +0 -14
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ require 'securerandom'
4
+
5
+ require 'serf/util/null_object'
6
+
7
+ describe Serf::Util::NullObject do
8
+ let(:random_method_name) {
9
+ SecureRandom.hex.to_sym
10
+ }
11
+
12
+ it 'returns itself on any fuzzy method call' do
13
+ subject.send(random_method_name).should == subject
14
+ end
15
+
16
+ it 'returns itself on a missing method' do
17
+ subject.my_missing_method.should == subject
18
+ end
19
+
20
+ it 'returns itself on a missing method with params' do
21
+ subject.my_missing_method(1,2,3,4) {
22
+ nil
23
+ }.should == subject
24
+ end
25
+
26
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples '#opts with nonexistent option' do
4
+ context 'with missing option' do
5
+
6
+ it 'returns default data' do
7
+ subject.opts(:nonexistent_option, 'DEFAULT').should == 'DEFAULT'
8
+ end
9
+
10
+ it 'returns nil data on no default' do
11
+ subject.opts(:nonexistent_option).should be_nil
12
+ end
13
+
14
+ it 'returns block data' do
15
+ calculator = double('calculator')
16
+ calculator.should_receive(:calculate).and_return('DEFAULT')
17
+ subject.opts(:nonexistent_option) {
18
+ calculator.calculate
19
+ }.should == 'DEFAULT'
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ describe Serf::Util::OptionsExtraction do
27
+ let(:given_options) {
28
+ FactoryGirl.create :random_options
29
+ }
30
+ subject { OptionsExtractionWrapper.new given_options }
31
+
32
+ describe '#opts!' do
33
+
34
+ it 'returns given data' do
35
+ subject.opts!(:option_a).should == given_options.option_a
36
+ end
37
+
38
+ it 'fails for missing option' do
39
+ expect {
40
+ subject.opts! :nonexistent_option
41
+ }.to raise_error
42
+ end
43
+
44
+ end
45
+
46
+ describe '#opts' do
47
+
48
+ it 'returns given data' do
49
+ subject.opts(:option_a).should == given_options.option_a
50
+ end
51
+
52
+ end
53
+
54
+ it_behaves_like '#opts with nonexistent option'
55
+
56
+ context 'with no options given' do
57
+ subject { OptionsExtractionWrapper.new }
58
+
59
+ it_behaves_like '#opts with nonexistent option'
60
+ end
61
+
62
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Serf::Util::ProtectedCall do
4
+ subject { ProtectedCallWrapper.new }
5
+
6
+ context 'has a raised error' do
7
+
8
+ it 'returns an error message' do
9
+ result, error = subject.pcall do
10
+ raise 'Some Error Message'
11
+ end
12
+ result.should be_nil
13
+ error.should be_a_kind_of(RuntimeError)
14
+ end
15
+
16
+ end
17
+
18
+ context 'has a succeeding app' do
19
+ let(:response_parcel) {
20
+ FactoryGirl.create :random_parcel
21
+ }
22
+
23
+ it 'returns a good response parcel' do
24
+ result, error = subject.pcall do
25
+ response_parcel
26
+ end
27
+ result.should == response_parcel
28
+ error.should be_nil
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ require 'serf/util/uuidable'
4
+
5
+ ##
6
+ # NOTE: Not really great tests here... I really should mock out
7
+ # the uuid_tool to really get at the meat of the work.
8
+ #
9
+ describe Serf::Util::Uuidable do
10
+
11
+ its(:create_coded_uuid) {
12
+ should_not be_nil
13
+ subject.size.should == 22
14
+ }
15
+
16
+ describe '#parse_coded_uuid' do
17
+
18
+ it 'works' do
19
+ subject.parse_coded_uuid subject.create_coded_uuid
20
+ end
21
+
22
+ end
23
+
24
+ describe '#create_uuids' do
25
+
26
+ it 'works with no parent' do
27
+ uuids = subject.create_uuids
28
+ uuids[:uuid].should_not be_nil
29
+ uuids[:parent_uuid].should be_nil
30
+ uuids[:origin_uuid].should be_nil
31
+ end
32
+
33
+ it 'copies origin from parent' do
34
+ uuids = subject.create_uuids origin_uuid: 'MY_UUID'
35
+ uuids[:uuid].should_not be_nil
36
+ uuids[:parent_uuid].should be_nil
37
+ uuids[:origin_uuid].should == 'MY_UUID'
38
+ end
39
+
40
+ it 'sets origin from parent[:parent_uuid] if origin is nonexistent ' do
41
+ uuids = subject.create_uuids parent_uuid: 'MY_UUID'
42
+ uuids[:uuid].should_not be_nil
43
+ uuids[:parent_uuid].should be_nil
44
+ uuids[:origin_uuid].should == 'MY_UUID'
45
+ end
46
+
47
+ it 'sets origin, parent from parent[:uuid] on missing origin and parent' do
48
+ uuids = subject.create_uuids uuid: 'MY_UUID'
49
+ uuids[:uuid].should_not be_nil
50
+ uuids[:parent_uuid].should == 'MY_UUID'
51
+ uuids[:origin_uuid].should == 'MY_UUID'
52
+ end
53
+
54
+ end
55
+
56
+ end
data/spec/serf_spec.rb CHANGED
@@ -1,7 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Serf" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
6
- end
7
4
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ #require 'simplecov'
2
+ #SimpleCov.start
3
+
1
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
6
  require 'rspec'
@@ -0,0 +1,5 @@
1
+ require 'serf/util/error_handling'
2
+
3
+ class ErrorHandlingWrapper
4
+ include Serf::Util::ErrorHandling
5
+ end
@@ -0,0 +1,32 @@
1
+ require 'factory_girl'
2
+ require 'hashie'
3
+ require 'securerandom'
4
+
5
+ FactoryGirl.define do
6
+ sequence(:random_string) { SecureRandom.hex }
7
+
8
+ factory :random_parcel, class: Hashie::Mash do
9
+ headers {{
10
+ uuid: generate(:random_string),
11
+ kind: generate(:random_string)
12
+ }}
13
+ message {{
14
+ some_data: generate(:random_string)
15
+ }}
16
+ end
17
+
18
+ factory :random_headers, class: Hashie::Mash do
19
+ uuid { generate(:random_string) }
20
+ kind { generate(:random_string) }
21
+ end
22
+
23
+ factory :random_message, class: Hashie::Mash do
24
+ data { generate(:random_string) }
25
+ end
26
+
27
+ factory :random_options, class: Hashie::Mash do
28
+ option_a { generate(:random_string) }
29
+ option_b { generate(:random_string) }
30
+ option_c { generate(:random_string) }
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'serf/errors/policy_failure'
2
+
3
+ class FailingPolicy
4
+
5
+ def check!(parcel)
6
+ raise Serf::Errors::PolicyFailure, 'Failed Policy'
7
+ end
8
+
9
+ end
@@ -0,0 +1,14 @@
1
+ require 'json-schema'
2
+
3
+ class JsonSchemaTester
4
+ SCHEMA_ROOT = File.join(File.dirname(__FILE__), '..', '..', 'schemas')
5
+
6
+ def path_for(kind)
7
+ "#{SCHEMA_ROOT}/#{kind}.json"
8
+ end
9
+
10
+ def validate_for!(kind, data)
11
+ JSON::Validator.validate! path_for(kind), data
12
+ end
13
+
14
+ end
@@ -0,0 +1,10 @@
1
+ require 'serf/util/options_extraction'
2
+
3
+ class OptionsExtractionWrapper
4
+ include Serf::Util::OptionsExtraction
5
+
6
+ def initialize(*args)
7
+ extract_options! args
8
+ end
9
+
10
+ end
@@ -0,0 +1,7 @@
1
+ class PassingPolicy
2
+
3
+ def check!(parcel)
4
+ nil
5
+ end
6
+
7
+ end
@@ -0,0 +1,5 @@
1
+ require 'serf/util/protected_call'
2
+
3
+ class ProtectedCallWrapper
4
+ include Serf::Util::ProtectedCall
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,33 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-30 00:00:00.000000000 Z
12
+ date: 2012-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: activesupport
16
- requirement: &70327288822860 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 3.2.0
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: *70327288822860
25
- - !ruby/object:Gem::Dependency
26
- name: i18n
27
- requirement: &70327288821320 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: 0.6.0
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *70327288821320
36
14
  - !ruby/object:Gem::Dependency
37
15
  name: hashie
38
- requirement: &70327288843640 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
39
17
  none: false
40
18
  requirements:
41
19
  - - ! '>='
@@ -43,145 +21,70 @@ dependencies:
43
21
  version: 1.2.0
44
22
  type: :runtime
45
23
  prerelease: false
46
- version_requirements: *70327288843640
47
- - !ruby/object:Gem::Dependency
48
- name: uuidtools
49
- requirement: &70327288842560 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
50
25
  none: false
51
26
  requirements:
52
27
  - - ! '>='
53
28
  - !ruby/object:Gem::Version
54
- version: 2.1.2
55
- type: :runtime
56
- prerelease: false
57
- version_requirements: *70327288842560
58
- - !ruby/object:Gem::Dependency
59
- name: rspec
60
- requirement: &70327288841020 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- version: 2.8.0
66
- type: :development
67
- prerelease: false
68
- version_requirements: *70327288841020
69
- - !ruby/object:Gem::Dependency
70
- name: yard
71
- requirement: &70327288839480 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 0.7.5
77
- type: :development
78
- prerelease: false
79
- version_requirements: *70327288839480
80
- - !ruby/object:Gem::Dependency
81
- name: bundler
82
- requirement: &70327288837820 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ~>
86
- - !ruby/object:Gem::Version
87
- version: 1.1.3
88
- type: :development
89
- prerelease: false
90
- version_requirements: *70327288837820
91
- - !ruby/object:Gem::Dependency
92
- name: jeweler
93
- requirement: &70327288847420 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: 1.8.3
99
- type: :development
100
- prerelease: false
101
- version_requirements: *70327288847420
102
- - !ruby/object:Gem::Dependency
103
- name: simplecov
104
- requirement: &70327288845020 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: *70327288845020
29
+ version: 1.2.0
113
30
  - !ruby/object:Gem::Dependency
114
- name: log4r
115
- requirement: &70327288859780 !ruby/object:Gem::Requirement
31
+ name: ice_nine
32
+ requirement: !ruby/object:Gem::Requirement
116
33
  none: false
117
34
  requirements:
118
35
  - - ! '>='
119
36
  - !ruby/object:Gem::Version
120
- version: 1.1.10
121
- type: :development
37
+ version: 0.4.0
38
+ type: :runtime
122
39
  prerelease: false
123
- version_requirements: *70327288859780
124
- - !ruby/object:Gem::Dependency
125
- name: msgpack
126
- requirement: &70327288858080 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
127
41
  none: false
128
42
  requirements:
129
43
  - - ! '>='
130
44
  - !ruby/object:Gem::Version
131
- version: 0.4.6
132
- type: :development
133
- prerelease: false
134
- version_requirements: *70327288858080
45
+ version: 0.4.0
135
46
  - !ruby/object:Gem::Dependency
136
- name: eventmachine
137
- requirement: &70327288857320 !ruby/object:Gem::Requirement
47
+ name: uuidtools
48
+ requirement: !ruby/object:Gem::Requirement
138
49
  none: false
139
50
  requirements:
140
51
  - - ! '>='
141
52
  - !ruby/object:Gem::Version
142
- version: 0.12.10
143
- type: :development
53
+ version: 2.1.3
54
+ type: :runtime
144
55
  prerelease: false
145
- version_requirements: *70327288857320
146
- - !ruby/object:Gem::Dependency
147
- name: girl_friday
148
- requirement: &70327288856640 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
149
57
  none: false
150
58
  requirements:
151
59
  - - ! '>='
152
60
  - !ruby/object:Gem::Version
153
- version: 0.9.7
154
- type: :development
155
- prerelease: false
156
- version_requirements: *70327288856640
157
- description: Event-Driven SOA with CQRS
61
+ version: 2.1.3
62
+ description: Interactors with policy protection
158
63
  email: benjaminlyu@gmail.com
159
64
  executables: []
160
65
  extensions: []
161
66
  extra_rdoc_files:
162
67
  - LICENSE.txt
68
+ - NOTICE.txt
163
69
  - README.md
164
70
  files:
165
- - .document
166
- - .rspec
71
+ - .gitignore
72
+ - .travis.yml
167
73
  - Gemfile
168
- - Gemfile.lock
74
+ - Guardfile
169
75
  - LICENSE.txt
170
76
  - NOTICE.txt
171
77
  - README.md
172
78
  - Rakefile
173
- - docs/thread_pools.txt
174
79
  - lib/serf.rb
175
80
  - lib/serf/builder.rb
176
- - lib/serf/command.rb
177
- - lib/serf/error.rb
178
- - lib/serf/errors/not_found.rb
179
- - lib/serf/middleware/girl_friday_async.rb
180
- - lib/serf/middleware/masherize.rb
81
+ - lib/serf/errors/policy_failure.rb
82
+ - lib/serf/middleware/error_handler.rb
83
+ - lib/serf/middleware/parcel_freezer.rb
84
+ - lib/serf/middleware/parcel_masher.rb
85
+ - lib/serf/middleware/policy_checker.rb
181
86
  - lib/serf/middleware/uuid_tagger.rb
182
- - lib/serf/routing/regexp_matcher.rb
183
- - lib/serf/routing/route.rb
184
- - lib/serf/routing/route_set.rb
87
+ - lib/serf/parcel_builder.rb
185
88
  - lib/serf/serfer.rb
186
89
  - lib/serf/util/error_handling.rb
187
90
  - lib/serf/util/null_object.rb
@@ -189,11 +92,31 @@ files:
189
92
  - lib/serf/util/protected_call.rb
190
93
  - lib/serf/util/uuidable.rb
191
94
  - lib/serf/version.rb
192
- - schemas/caught_exception_event.json
193
- - schemas/message_accepted_event.json
95
+ - schemas/serf/events/caught_error.json
194
96
  - serf.gemspec
97
+ - spec/serf/builder_spec.rb
98
+ - spec/serf/errors/policy_failure_spec.rb
99
+ - spec/serf/middleware/error_handler_spec.rb
100
+ - spec/serf/middleware/parcel_freezer_spec.rb
101
+ - spec/serf/middleware/parcel_masher_spec.rb
102
+ - spec/serf/middleware/policy_checker_spec.rb
103
+ - spec/serf/middleware/uuid_tagger_spec.rb
104
+ - spec/serf/parcel_builder_spec.rb
105
+ - spec/serf/serfer_spec.rb
106
+ - spec/serf/util/error_handling_spec.rb
107
+ - spec/serf/util/null_object_spec.rb
108
+ - spec/serf/util/options_extraction_spec.rb
109
+ - spec/serf/util/protected_call_spec.rb
110
+ - spec/serf/util/uuidable_spec.rb
195
111
  - spec/serf_spec.rb
196
112
  - spec/spec_helper.rb
113
+ - spec/support/error_handling_wrapper.rb
114
+ - spec/support/factories.rb
115
+ - spec/support/failing_policy.rb
116
+ - spec/support/json_schema_tester.rb
117
+ - spec/support/options_extraction_wrapper.rb
118
+ - spec/support/passing_policy.rb
119
+ - spec/support/protected_call_wrapper.rb
197
120
  homepage: http://github.com/byu/serf
198
121
  licenses:
199
122
  - Apache 2.0
@@ -209,17 +132,44 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
132
  version: '0'
210
133
  segments:
211
134
  - 0
212
- hash: 2408210682612837552
135
+ hash: 3096022116459469640
213
136
  required_rubygems_version: !ruby/object:Gem::Requirement
214
137
  none: false
215
138
  requirements:
216
139
  - - ! '>='
217
140
  - !ruby/object:Gem::Version
218
141
  version: '0'
142
+ segments:
143
+ - 0
144
+ hash: 3096022116459469640
219
145
  requirements: []
220
146
  rubyforge_project:
221
- rubygems_version: 1.8.17
147
+ rubygems_version: 1.8.23
222
148
  signing_key:
223
149
  specification_version: 3
224
- summary: Event-Driven SOA with CQRS
225
- test_files: []
150
+ summary: Interactors with policy protection
151
+ test_files:
152
+ - spec/serf/builder_spec.rb
153
+ - spec/serf/errors/policy_failure_spec.rb
154
+ - spec/serf/middleware/error_handler_spec.rb
155
+ - spec/serf/middleware/parcel_freezer_spec.rb
156
+ - spec/serf/middleware/parcel_masher_spec.rb
157
+ - spec/serf/middleware/policy_checker_spec.rb
158
+ - spec/serf/middleware/uuid_tagger_spec.rb
159
+ - spec/serf/parcel_builder_spec.rb
160
+ - spec/serf/serfer_spec.rb
161
+ - spec/serf/util/error_handling_spec.rb
162
+ - spec/serf/util/null_object_spec.rb
163
+ - spec/serf/util/options_extraction_spec.rb
164
+ - spec/serf/util/protected_call_spec.rb
165
+ - spec/serf/util/uuidable_spec.rb
166
+ - spec/serf_spec.rb
167
+ - spec/spec_helper.rb
168
+ - spec/support/error_handling_wrapper.rb
169
+ - spec/support/factories.rb
170
+ - spec/support/failing_policy.rb
171
+ - spec/support/json_schema_tester.rb
172
+ - spec/support/options_extraction_wrapper.rb
173
+ - spec/support/passing_policy.rb
174
+ - spec/support/protected_call_wrapper.rb
175
+ has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
data/Gemfile.lock DELETED
@@ -1,58 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activesupport (3.2.2)
5
- i18n (~> 0.6)
6
- multi_json (~> 1.0)
7
- connection_pool (0.1.0)
8
- diff-lcs (1.1.3)
9
- eventmachine (0.12.10)
10
- girl_friday (0.9.7)
11
- connection_pool (~> 0.1.0)
12
- git (1.2.5)
13
- hashie (1.2.0)
14
- i18n (0.6.0)
15
- jeweler (1.8.3)
16
- bundler (~> 1.0)
17
- git (>= 1.2.5)
18
- rake
19
- rdoc
20
- json (1.6.5)
21
- log4r (1.1.10)
22
- msgpack (0.4.6)
23
- multi_json (1.1.0)
24
- rake (0.9.2.2)
25
- rdoc (3.12)
26
- json (~> 1.4)
27
- rspec (2.8.0)
28
- rspec-core (~> 2.8.0)
29
- rspec-expectations (~> 2.8.0)
30
- rspec-mocks (~> 2.8.0)
31
- rspec-core (2.8.0)
32
- rspec-expectations (2.8.0)
33
- diff-lcs (~> 1.1.2)
34
- rspec-mocks (2.8.0)
35
- simplecov (0.6.1)
36
- multi_json (~> 1.0)
37
- simplecov-html (~> 0.5.3)
38
- simplecov-html (0.5.3)
39
- uuidtools (2.1.2)
40
- yard (0.7.5)
41
-
42
- PLATFORMS
43
- ruby
44
-
45
- DEPENDENCIES
46
- activesupport (>= 3.2.0)
47
- bundler (~> 1.1.3)
48
- eventmachine (>= 0.12.10)
49
- girl_friday (>= 0.9.7)
50
- hashie (>= 1.2.0)
51
- i18n (>= 0.6.0)
52
- jeweler (~> 1.8.3)
53
- log4r (>= 1.1.10)
54
- msgpack (>= 0.4.6)
55
- rspec (~> 2.8.0)
56
- simplecov
57
- uuidtools (>= 2.1.2)
58
- yard (~> 0.7.5)
@@ -1,16 +0,0 @@
1
- Serf drives the incoming requests using runners. Each runner
2
- is implemented to either perform tasks synchronously or asynchronously.
3
- For asynchronous background processing, we rely on third party
4
- libraries. The following is a list of current and (hopefully) future
5
- libraries we hope to support.
6
-
7
- Implemented Runners:
8
- * EventMachine http://rubyeventmachine.com/
9
- * GirlFriday https://github.com/mperham/girl_friday
10
-
11
- TBD ThreadPool Libraries:
12
- * ThreadPool https://github.com/danielbush/ThreadPool
13
- * Threadz https://github.com/nanodeath/threadz
14
- * Celluloid https://github.com/tarcieri/celluloid
15
- * Resque https://github.com/defunkt/resque
16
- * DelayedJob https://github.com/tobi/delayed_job