eventmachine 0.12.6 → 0.12.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/{docs/README → README} +21 -13
  2. data/Rakefile +14 -4
  3. data/docs/DEFERRABLES +0 -5
  4. data/docs/INSTALL +2 -4
  5. data/docs/LEGAL +1 -1
  6. data/docs/LIGHTWEIGHT_CONCURRENCY +0 -2
  7. data/docs/PURE_RUBY +0 -2
  8. data/docs/RELEASE_NOTES +0 -2
  9. data/docs/SMTP +0 -7
  10. data/docs/SPAWNED_PROCESSES +0 -4
  11. data/docs/TODO +0 -2
  12. data/eventmachine.gemspec +17 -8
  13. data/examples/ex_channel.rb +43 -0
  14. data/examples/ex_queue.rb +2 -0
  15. data/examples/helper.rb +2 -0
  16. data/ext/cmain.cpp +119 -20
  17. data/ext/cplusplus.cpp +15 -6
  18. data/ext/ed.cpp +303 -93
  19. data/ext/ed.h +49 -22
  20. data/ext/em.cpp +368 -42
  21. data/ext/em.h +43 -6
  22. data/ext/eventmachine.h +21 -8
  23. data/ext/eventmachine_cpp.h +1 -0
  24. data/ext/extconf.rb +4 -0
  25. data/ext/kb.cpp +1 -2
  26. data/ext/pipe.cpp +1 -3
  27. data/ext/project.h +21 -0
  28. data/ext/rubymain.cpp +232 -32
  29. data/ext/ssl.cpp +38 -1
  30. data/ext/ssl.h +5 -1
  31. data/java/src/com/rubyeventmachine/Application.java +7 -3
  32. data/java/src/com/rubyeventmachine/EmReactor.java +16 -1
  33. data/java/src/com/rubyeventmachine/tests/ConnectTest.java +25 -3
  34. data/lib/{protocols → em}/buftok.rb +16 -5
  35. data/lib/em/callback.rb +26 -0
  36. data/lib/em/channel.rb +57 -0
  37. data/lib/em/connection.rb +505 -0
  38. data/lib/em/deferrable.rb +144 -165
  39. data/lib/em/file_watch.rb +54 -0
  40. data/lib/em/future.rb +24 -25
  41. data/lib/em/messages.rb +1 -1
  42. data/lib/em/process_watch.rb +44 -0
  43. data/lib/em/processes.rb +58 -52
  44. data/lib/em/protocols.rb +35 -0
  45. data/lib/em/protocols/header_and_content.rb +138 -0
  46. data/lib/em/protocols/httpclient.rb +263 -0
  47. data/lib/em/protocols/httpclient2.rb +582 -0
  48. data/lib/{protocols → em/protocols}/line_and_text.rb +2 -2
  49. data/lib/em/protocols/linetext2.rb +160 -0
  50. data/lib/{protocols → em/protocols}/memcache.rb +37 -7
  51. data/lib/em/protocols/object_protocol.rb +39 -0
  52. data/lib/em/protocols/postgres3.rb +247 -0
  53. data/lib/em/protocols/saslauth.rb +175 -0
  54. data/lib/em/protocols/smtpclient.rb +331 -0
  55. data/lib/em/protocols/smtpserver.rb +547 -0
  56. data/lib/em/protocols/stomp.rb +200 -0
  57. data/lib/{protocols → em/protocols}/tcptest.rb +21 -25
  58. data/lib/em/queue.rb +61 -0
  59. data/lib/em/spawnable.rb +53 -56
  60. data/lib/em/streamer.rb +92 -74
  61. data/lib/em/timers.rb +55 -0
  62. data/lib/em/version.rb +3 -0
  63. data/lib/eventmachine.rb +1008 -1298
  64. data/lib/evma.rb +1 -1
  65. data/lib/jeventmachine.rb +106 -101
  66. data/lib/pr_eventmachine.rb +47 -36
  67. data/tasks/project.rake +2 -1
  68. data/tests/client.crt +31 -0
  69. data/tests/client.key +51 -0
  70. data/tests/test_attach.rb +18 -0
  71. data/tests/test_basic.rb +108 -54
  72. data/tests/test_channel.rb +63 -0
  73. data/tests/test_connection_count.rb +2 -2
  74. data/tests/test_epoll.rb +109 -110
  75. data/tests/test_errors.rb +36 -36
  76. data/tests/test_exc.rb +22 -25
  77. data/tests/test_file_watch.rb +49 -0
  78. data/tests/test_futures.rb +77 -93
  79. data/tests/test_hc.rb +2 -2
  80. data/tests/test_httpclient.rb +55 -52
  81. data/tests/test_httpclient2.rb +110 -112
  82. data/tests/test_inactivity_timeout.rb +30 -0
  83. data/tests/test_kb.rb +8 -9
  84. data/tests/test_ltp2.rb +274 -277
  85. data/tests/test_next_tick.rb +91 -65
  86. data/tests/test_object_protocol.rb +37 -0
  87. data/tests/test_process_watch.rb +48 -0
  88. data/tests/test_processes.rb +56 -23
  89. data/tests/test_proxy_connection.rb +92 -0
  90. data/tests/test_pure.rb +1 -5
  91. data/tests/test_queue.rb +44 -0
  92. data/tests/test_running.rb +9 -14
  93. data/tests/test_sasl.rb +32 -34
  94. data/tests/test_send_file.rb +175 -176
  95. data/tests/test_servers.rb +37 -41
  96. data/tests/test_smtpserver.rb +47 -55
  97. data/tests/test_spawn.rb +284 -291
  98. data/tests/test_ssl_args.rb +1 -1
  99. data/tests/test_ssl_methods.rb +1 -1
  100. data/tests/test_ssl_verify.rb +82 -0
  101. data/tests/test_timers.rb +81 -88
  102. data/tests/test_ud.rb +0 -7
  103. data/tests/testem.rb +1 -1
  104. metadata +68 -39
  105. data/lib/em/eventable.rb +0 -39
  106. data/lib/eventmachine_version.rb +0 -31
  107. data/lib/protocols/header_and_content.rb +0 -129
  108. data/lib/protocols/httpcli2.rb +0 -803
  109. data/lib/protocols/httpclient.rb +0 -270
  110. data/lib/protocols/linetext2.rb +0 -161
  111. data/lib/protocols/postgres.rb +0 -261
  112. data/lib/protocols/saslauth.rb +0 -179
  113. data/lib/protocols/smtpclient.rb +0 -308
  114. data/lib/protocols/smtpserver.rb +0 -556
  115. data/lib/protocols/stomp.rb +0 -153
  116. data/tests/test_eventables.rb +0 -77
@@ -65,4 +65,4 @@ class TestSslArgs < Test::Unit::TestCase
65
65
  assert(false, 'should not have raised an exception')
66
66
  end
67
67
  end
68
- end
68
+ end if EM.ssl?
@@ -47,4 +47,4 @@ class TestSSLMethods < Test::Unit::TestCase
47
47
  assert($client_cert_value.is_a?(String))
48
48
  end
49
49
 
50
- end
50
+ end if EM.ssl?
@@ -0,0 +1,82 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestSslVerify < Test::Unit::TestCase
6
+
7
+ def setup
8
+ $dir = File.dirname(File.expand_path(__FILE__)) + '/'
9
+ $cert_from_file = File.read($dir+'client.crt')
10
+ end
11
+
12
+ module Client
13
+ def connection_completed
14
+ start_tls(:private_key_file => $dir+'client.key', :cert_chain_file => $dir+'client.crt')
15
+ end
16
+
17
+ def ssl_handshake_completed
18
+ $client_handshake_completed = true
19
+ close_connection
20
+ end
21
+
22
+ def unbind
23
+ EM.stop_event_loop
24
+ end
25
+ end
26
+
27
+ module AcceptServer
28
+ def post_init
29
+ start_tls(:verify_peer => true)
30
+ end
31
+
32
+ def ssl_verify_peer(cert)
33
+ $cert_from_server = cert
34
+ true
35
+ end
36
+
37
+ def ssl_handshake_completed
38
+ $server_handshake_completed = true
39
+ end
40
+ end
41
+
42
+ module DenyServer
43
+ def post_init
44
+ start_tls(:verify_peer => true)
45
+ end
46
+
47
+ def ssl_verify_peer(cert)
48
+ $cert_from_server = cert
49
+ # Do not accept the peer. This should now cause the connection to shut down without the SSL handshake being completed.
50
+ false
51
+ end
52
+
53
+ def ssl_handshake_completed
54
+ $server_handshake_completed = true
55
+ end
56
+ end
57
+
58
+ def test_accept_server
59
+ $client_handshake_completed, $server_handshake_completed = false, false
60
+ EM.run {
61
+ EM.start_server("127.0.0.1", 16784, AcceptServer)
62
+ EM.connect("127.0.0.1", 16784, Client).instance_variable_get("@signature")
63
+ }
64
+
65
+ assert_equal($cert_from_file, $cert_from_server)
66
+ assert($client_handshake_completed)
67
+ assert($server_handshake_completed)
68
+ end
69
+
70
+ def test_deny_server
71
+ $client_handshake_completed, $server_handshake_completed = false, false
72
+ EM.run {
73
+ EM.start_server("127.0.0.1", 16784, DenyServer)
74
+ EM.connect("127.0.0.1", 16784, Client)
75
+ }
76
+
77
+ assert_equal($cert_from_file, $cert_from_server)
78
+ assert(!$client_handshake_completed)
79
+ assert(!$server_handshake_completed)
80
+ end
81
+
82
+ end
@@ -29,120 +29,113 @@ $:.unshift "../lib"
29
29
  require 'eventmachine'
30
30
  require 'test/unit'
31
31
 
32
-
33
32
  class TestTimers < Test::Unit::TestCase
34
33
 
35
- def setup
36
- end
37
-
38
- def teardown
39
- end
40
-
41
34
  def test_timer_with_block
42
- x = false
43
- EventMachine.run {
44
- EventMachine::Timer.new(0.25) {
45
- x = true
46
- EventMachine.stop
47
- }
48
- }
49
- assert x
35
+ x = false
36
+ EventMachine.run {
37
+ EventMachine::Timer.new(0.25) {
38
+ x = true
39
+ EventMachine.stop
40
+ }
41
+ }
42
+ assert x
50
43
  end
51
44
 
52
45
  def test_timer_with_proc
53
- x = false
54
- EventMachine.run {
55
- EventMachine::Timer.new(0.25, proc {
56
- x = true
57
- EventMachine.stop
58
- })
59
- }
60
- assert x
46
+ x = false
47
+ EventMachine.run {
48
+ EventMachine::Timer.new(0.25, proc {
49
+ x = true
50
+ EventMachine.stop
51
+ })
52
+ }
53
+ assert x
61
54
  end
62
55
 
63
56
  def test_timer_cancel
64
- x = true
65
- EventMachine.run {
66
- timer = EventMachine::Timer.new(0.25, proc { x = false })
67
- timer.cancel
68
- EventMachine::Timer.new(0.5, proc {EventMachine.stop})
69
- }
70
- assert x
57
+ x = true
58
+ EventMachine.run {
59
+ timer = EventMachine::Timer.new(0.25, proc { x = false })
60
+ timer.cancel
61
+ EventMachine::Timer.new(0.5, proc {EventMachine.stop})
62
+ }
63
+ assert x
71
64
  end
72
65
 
73
66
  def test_periodic_timer
74
- x = 0
75
- EventMachine.run {
76
- EventMachine::PeriodicTimer.new(0.1) do
77
- x += 1
78
- EventMachine.stop if x == 4
79
- end
80
- }
81
- assert( x == 4 )
67
+ x = 0
68
+ EventMachine.run {
69
+ EventMachine::PeriodicTimer.new(0.1) do
70
+ x += 1
71
+ EventMachine.stop if x == 4
72
+ end
73
+ }
74
+ assert( x == 4 )
82
75
  end
83
76
 
84
77
  def test_periodic_timer_cancel
85
- x = 0
86
- EventMachine.run {
87
- pt = EventMachine::PeriodicTimer.new(0.25, proc { x += 1 })
88
- pt.cancel
89
- EventMachine::Timer.new(0.5) {EventMachine.stop}
90
- }
91
- assert( x == 0 )
78
+ x = 0
79
+ EventMachine.run {
80
+ pt = EventMachine::PeriodicTimer.new(0.25, proc { x += 1 })
81
+ pt.cancel
82
+ EventMachine::Timer.new(0.5) {EventMachine.stop}
83
+ }
84
+ assert( x == 0 )
92
85
  end
93
86
 
94
87
  def test_periodic_timer_self_cancel
95
- x = 0
96
- EventMachine.run {
97
- pt = EventMachine::PeriodicTimer.new(0.1) {
98
- x += 1
99
- if x == 4
100
- pt.cancel
101
- EventMachine.stop
102
- end
103
- }
104
- }
105
- assert( x == 4 )
88
+ x = 0
89
+ EventMachine.run {
90
+ pt = EventMachine::PeriodicTimer.new(0.1) {
91
+ x += 1
92
+ if x == 4
93
+ pt.cancel
94
+ EventMachine.stop
95
+ end
96
+ }
97
+ }
98
+ assert( x == 4 )
106
99
  end
107
100
 
108
101
 
109
- # This test is only applicable to compiled versions of the reactor.
110
- # Pure ruby and java versions have no built-in limit on the number of outstanding timers.
111
- #
112
- def test_timer_change_max_outstanding
113
- ten_thousand_timers = proc {
114
- 10000.times {
115
- EM.add_timer(5) {}
116
- }
117
- }
118
- EM.run {
119
- if EM.library_type == :pure_ruby
120
- ten_thousand_timers.call
121
- elsif EM.library_type == :java
122
- ten_thousand_timers.call
123
- else
124
- begin
125
- assert_raises( RuntimeError ) {
126
- ten_thousand_timers.call
127
- }
128
- rescue Object
129
- p $!
130
- assert(false, $!.message)
131
- end
132
- end
133
- EM.stop
134
- }
102
+ # This test is only applicable to compiled versions of the reactor.
103
+ # Pure ruby and java versions have no built-in limit on the number of outstanding timers.
104
+ #
105
+ def test_timer_change_max_outstanding
106
+ ten_thousand_timers = proc {
107
+ 10000.times {
108
+ EM.add_timer(5) {}
109
+ }
110
+ }
111
+
112
+ EM.run {
113
+ if EM.library_type == :pure_ruby
114
+ ten_thousand_timers.call
115
+ elsif EM.library_type == :java
116
+ ten_thousand_timers.call
117
+ else
118
+ begin
119
+ assert_raises( RuntimeError ) {
120
+ ten_thousand_timers.call
121
+ }
122
+ rescue Object
123
+ p $!
124
+ assert(false, $!.message)
125
+ end
126
+ end
127
+ EM.stop
128
+ }
135
129
 
136
130
  assert(!EM.reactor_running?, 'Reactor running when it should not be.')
137
131
  assert( EM.get_max_timers != 10001 )
138
132
  EM.set_max_timers( 10001 )
139
133
  assert( EM.get_max_timers == 10001 )
140
134
 
141
- EM.run {
142
- ten_thousand_timers.call
143
- EM.stop
144
- }
145
- end
135
+ EM.run {
136
+ ten_thousand_timers.call
137
+ EM.stop
138
+ }
139
+ end
146
140
 
147
141
  end
148
-
@@ -30,14 +30,7 @@ require 'test/unit'
30
30
 
31
31
  class TestUserDefinedEvents < Test::Unit::TestCase
32
32
 
33
- def setup
34
- end
35
-
36
- def teardown
37
- end
38
-
39
33
  def test_a
40
34
  end
41
35
 
42
36
  end
43
-
@@ -28,4 +28,4 @@ end
28
28
 
29
29
  if __FILE__ == $0
30
30
  EmTestRunner.run
31
- end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventmachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.6
4
+ version: 0.12.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Cianfrocca
@@ -9,35 +9,33 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-07 23:00:00 -08:00
12
+ date: 2009-05-22 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: EventMachine implements a fast, single-threaded engine for arbitrary network communications. It's extremely easy to use in Ruby. EventMachine wraps all interactions with IP sockets, allowing programs to concentrate on the implementation of network protocols. It can be used to create both network servers and clients. To create a server or client, a Ruby program only needs to specify the IP address and port, and provide a Module that implements the communications protocol. Implementations of several standard network protocols are provided with the package, primarily to serve as examples. The real goal of EventMachine is to enable programs to easily interface with other programs using TCP/IP, especially if custom protocols are required.
16
+ description: |
17
+ EventMachine implements a fast, single-threaded engine for arbitrary network
18
+ communications. It's extremely easy to use in Ruby. EventMachine wraps all
19
+ interactions with IP sockets, allowing programs to concentrate on the
20
+ implementation of network protocols. It can be used to create both network
21
+ servers and clients. To create a server or client, a Ruby program only needs
22
+ to specify the IP address and port, and provide a Module that implements the
23
+ communications protocol. Implementations of several standard network protocols
24
+ are provided with the package, primarily to serve as examples. The real goal
25
+ of EventMachine is to enable programs to easily interface with other programs
26
+ using TCP/IP, especially if custom protocols are required.
27
+
17
28
  email: garbagecat10@gmail.com
18
29
  executables: []
19
30
 
20
31
  extensions:
21
32
  - ext/extconf.rb
22
33
  - ext/fastfilereader/extconf.rb
23
- extra_rdoc_files:
24
- - docs/ChangeLog
25
- - docs/COPYING
26
- - docs/DEFERRABLES
27
- - docs/EPOLL
28
- - docs/GNU
29
- - docs/INSTALL
30
- - docs/KEYBOARD
31
- - docs/LEGAL
32
- - docs/LIGHTWEIGHT_CONCURRENCY
33
- - docs/PURE_RUBY
34
- - docs/README
35
- - docs/RELEASE_NOTES
36
- - docs/SMTP
37
- - docs/SPAWNED_PROCESSES
38
- - docs/TODO
34
+ extra_rdoc_files: []
35
+
39
36
  files:
40
37
  - .gitignore
38
+ - README
41
39
  - Rakefile
42
40
  - docs/COPYING
43
41
  - docs/ChangeLog
@@ -49,12 +47,14 @@ files:
49
47
  - docs/LEGAL
50
48
  - docs/LIGHTWEIGHT_CONCURRENCY
51
49
  - docs/PURE_RUBY
52
- - docs/README
53
50
  - docs/RELEASE_NOTES
54
51
  - docs/SMTP
55
52
  - docs/SPAWNED_PROCESSES
56
53
  - docs/TODO
57
54
  - eventmachine.gemspec
55
+ - examples/ex_channel.rb
56
+ - examples/ex_queue.rb
57
+ - examples/helper.rb
58
58
  - ext/binder.cpp
59
59
  - ext/binder.h
60
60
  - ext/cmain.cpp
@@ -105,15 +105,36 @@ files:
105
105
  - java/src/com/rubyeventmachine/tests/TestDatagrams.java
106
106
  - java/src/com/rubyeventmachine/tests/TestServers.java
107
107
  - java/src/com/rubyeventmachine/tests/TestTimers.java
108
+ - lib/em/buftok.rb
109
+ - lib/em/callback.rb
110
+ - lib/em/channel.rb
111
+ - lib/em/connection.rb
108
112
  - lib/em/deferrable.rb
109
- - lib/em/eventable.rb
113
+ - lib/em/file_watch.rb
110
114
  - lib/em/future.rb
111
115
  - lib/em/messages.rb
116
+ - lib/em/process_watch.rb
112
117
  - lib/em/processes.rb
118
+ - lib/em/protocols.rb
119
+ - lib/em/protocols/header_and_content.rb
120
+ - lib/em/protocols/httpclient.rb
121
+ - lib/em/protocols/httpclient2.rb
122
+ - lib/em/protocols/line_and_text.rb
123
+ - lib/em/protocols/linetext2.rb
124
+ - lib/em/protocols/memcache.rb
125
+ - lib/em/protocols/object_protocol.rb
126
+ - lib/em/protocols/postgres3.rb
127
+ - lib/em/protocols/saslauth.rb
128
+ - lib/em/protocols/smtpclient.rb
129
+ - lib/em/protocols/smtpserver.rb
130
+ - lib/em/protocols/stomp.rb
131
+ - lib/em/protocols/tcptest.rb
132
+ - lib/em/queue.rb
113
133
  - lib/em/spawnable.rb
114
134
  - lib/em/streamer.rb
135
+ - lib/em/timers.rb
136
+ - lib/em/version.rb
115
137
  - lib/eventmachine.rb
116
- - lib/eventmachine_version.rb
117
138
  - lib/evma.rb
118
139
  - lib/evma/callback.rb
119
140
  - lib/evma/container.rb
@@ -122,43 +143,38 @@ files:
122
143
  - lib/evma/reactor.rb
123
144
  - lib/jeventmachine.rb
124
145
  - lib/pr_eventmachine.rb
125
- - lib/protocols/buftok.rb
126
- - lib/protocols/header_and_content.rb
127
- - lib/protocols/httpcli2.rb
128
- - lib/protocols/httpclient.rb
129
- - lib/protocols/line_and_text.rb
130
- - lib/protocols/linetext2.rb
131
- - lib/protocols/memcache.rb
132
- - lib/protocols/postgres.rb
133
- - lib/protocols/saslauth.rb
134
- - lib/protocols/smtpclient.rb
135
- - lib/protocols/smtpserver.rb
136
- - lib/protocols/stomp.rb
137
- - lib/protocols/tcptest.rb
138
146
  - setup.rb
139
147
  - tasks/cpp.rake
140
148
  - tasks/project.rake
141
149
  - tasks/tests.rake
150
+ - tests/client.crt
151
+ - tests/client.key
142
152
  - tests/test_attach.rb
143
153
  - tests/test_basic.rb
154
+ - tests/test_channel.rb
144
155
  - tests/test_connection_count.rb
145
156
  - tests/test_defer.rb
146
157
  - tests/test_epoll.rb
147
158
  - tests/test_error_handler.rb
148
159
  - tests/test_errors.rb
149
- - tests/test_eventables.rb
150
160
  - tests/test_exc.rb
161
+ - tests/test_file_watch.rb
151
162
  - tests/test_futures.rb
152
163
  - tests/test_handler_check.rb
153
164
  - tests/test_hc.rb
154
165
  - tests/test_httpclient.rb
155
166
  - tests/test_httpclient2.rb
167
+ - tests/test_inactivity_timeout.rb
156
168
  - tests/test_kb.rb
157
169
  - tests/test_ltp.rb
158
170
  - tests/test_ltp2.rb
159
171
  - tests/test_next_tick.rb
172
+ - tests/test_object_protocol.rb
173
+ - tests/test_process_watch.rb
160
174
  - tests/test_processes.rb
175
+ - tests/test_proxy_connection.rb
161
176
  - tests/test_pure.rb
177
+ - tests/test_queue.rb
162
178
  - tests/test_running.rb
163
179
  - tests/test_sasl.rb
164
180
  - tests/test_send_file.rb
@@ -168,19 +184,32 @@ files:
168
184
  - tests/test_spawn.rb
169
185
  - tests/test_ssl_args.rb
170
186
  - tests/test_ssl_methods.rb
187
+ - tests/test_ssl_verify.rb
171
188
  - tests/test_timers.rb
172
189
  - tests/test_ud.rb
173
190
  - tests/testem.rb
174
191
  - web/whatis
175
192
  has_rdoc: true
176
193
  homepage: http://rubyeventmachine.com
194
+ licenses: []
195
+
177
196
  post_install_message:
178
197
  rdoc_options:
179
198
  - --title
180
199
  - EventMachine
181
200
  - --main
182
- - docs/README
201
+ - README
183
202
  - --line-numbers
203
+ - -x
204
+ - lib/em/version
205
+ - -x
206
+ - lib/emva
207
+ - -x
208
+ - lib/evma/
209
+ - -x
210
+ - lib/pr_eventmachine
211
+ - -x
212
+ - lib/jeventmachine
184
213
  require_paths:
185
214
  - lib
186
215
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -198,9 +227,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
227
  requirements: []
199
228
 
200
229
  rubyforge_project: eventmachine
201
- rubygems_version: 1.3.1
230
+ rubygems_version: 1.3.3
202
231
  signing_key:
203
- specification_version: 2
232
+ specification_version: 3
204
233
  summary: Ruby/EventMachine library
205
234
  test_files: []
206
235