steamcannon-thin 1.2.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.
Files changed (137) hide show
  1. data/CHANGELOG +288 -0
  2. data/COPYING +18 -0
  3. data/README +69 -0
  4. data/Rakefile +44 -0
  5. data/benchmark/abc +51 -0
  6. data/benchmark/benchmarker.rb +80 -0
  7. data/benchmark/runner +82 -0
  8. data/bin/thin +6 -0
  9. data/example/adapter.rb +32 -0
  10. data/example/async_app.ru +126 -0
  11. data/example/async_chat.ru +247 -0
  12. data/example/async_tailer.ru +100 -0
  13. data/example/config.ru +22 -0
  14. data/example/monit_sockets +20 -0
  15. data/example/monit_unixsock +20 -0
  16. data/example/myapp.rb +1 -0
  17. data/example/ramaze.ru +12 -0
  18. data/example/thin.god +80 -0
  19. data/example/thin_solaris_smf.erb +36 -0
  20. data/example/thin_solaris_smf.readme.txt +150 -0
  21. data/example/vlad.rake +64 -0
  22. data/ext/thin_parser/common.rl +55 -0
  23. data/ext/thin_parser/ext_help.h +14 -0
  24. data/ext/thin_parser/extconf.rb +6 -0
  25. data/ext/thin_parser/parser.c +1249 -0
  26. data/ext/thin_parser/parser.h +49 -0
  27. data/ext/thin_parser/parser.rl +157 -0
  28. data/ext/thin_parser/thin.c +436 -0
  29. data/lib/rack/adapter/loader.rb +91 -0
  30. data/lib/rack/adapter/rails.rb +183 -0
  31. data/lib/thin.rb +56 -0
  32. data/lib/thin/backends/base.rb +149 -0
  33. data/lib/thin/backends/swiftiply_client.rb +56 -0
  34. data/lib/thin/backends/tcp_server.rb +29 -0
  35. data/lib/thin/backends/unix_server.rb +51 -0
  36. data/lib/thin/command.rb +53 -0
  37. data/lib/thin/connection.rb +224 -0
  38. data/lib/thin/controllers/cluster.rb +178 -0
  39. data/lib/thin/controllers/controller.rb +188 -0
  40. data/lib/thin/controllers/service.rb +75 -0
  41. data/lib/thin/controllers/service.sh.erb +39 -0
  42. data/lib/thin/daemonizing.rb +180 -0
  43. data/lib/thin/headers.rb +39 -0
  44. data/lib/thin/logging.rb +54 -0
  45. data/lib/thin/request.rb +156 -0
  46. data/lib/thin/response.rb +101 -0
  47. data/lib/thin/runner.rb +220 -0
  48. data/lib/thin/server.rb +253 -0
  49. data/lib/thin/stats.html.erb +216 -0
  50. data/lib/thin/stats.rb +52 -0
  51. data/lib/thin/statuses.rb +43 -0
  52. data/lib/thin/version.rb +32 -0
  53. data/lib/thin_parser.so +0 -0
  54. data/spec/backends/swiftiply_client_spec.rb +66 -0
  55. data/spec/backends/tcp_server_spec.rb +33 -0
  56. data/spec/backends/unix_server_spec.rb +37 -0
  57. data/spec/command_spec.rb +25 -0
  58. data/spec/configs/cluster.yml +9 -0
  59. data/spec/configs/single.yml +9 -0
  60. data/spec/connection_spec.rb +106 -0
  61. data/spec/controllers/cluster_spec.rb +267 -0
  62. data/spec/controllers/controller_spec.rb +129 -0
  63. data/spec/controllers/service_spec.rb +50 -0
  64. data/spec/daemonizing_spec.rb +196 -0
  65. data/spec/headers_spec.rb +40 -0
  66. data/spec/logging_spec.rb +46 -0
  67. data/spec/perf/request_perf_spec.rb +50 -0
  68. data/spec/perf/response_perf_spec.rb +19 -0
  69. data/spec/perf/server_perf_spec.rb +39 -0
  70. data/spec/rack/loader_spec.rb +42 -0
  71. data/spec/rack/rails_adapter_spec.rb +173 -0
  72. data/spec/rails_app/app/controllers/application.rb +10 -0
  73. data/spec/rails_app/app/controllers/simple_controller.rb +19 -0
  74. data/spec/rails_app/app/helpers/application_helper.rb +3 -0
  75. data/spec/rails_app/app/views/simple/index.html.erb +15 -0
  76. data/spec/rails_app/config/boot.rb +109 -0
  77. data/spec/rails_app/config/environment.rb +64 -0
  78. data/spec/rails_app/config/environments/development.rb +18 -0
  79. data/spec/rails_app/config/environments/production.rb +19 -0
  80. data/spec/rails_app/config/environments/test.rb +22 -0
  81. data/spec/rails_app/config/initializers/inflections.rb +10 -0
  82. data/spec/rails_app/config/initializers/mime_types.rb +5 -0
  83. data/spec/rails_app/config/routes.rb +35 -0
  84. data/spec/rails_app/public/404.html +30 -0
  85. data/spec/rails_app/public/422.html +30 -0
  86. data/spec/rails_app/public/500.html +30 -0
  87. data/spec/rails_app/public/dispatch.cgi +10 -0
  88. data/spec/rails_app/public/dispatch.fcgi +24 -0
  89. data/spec/rails_app/public/dispatch.rb +10 -0
  90. data/spec/rails_app/public/favicon.ico +0 -0
  91. data/spec/rails_app/public/images/rails.png +0 -0
  92. data/spec/rails_app/public/index.html +277 -0
  93. data/spec/rails_app/public/javascripts/application.js +2 -0
  94. data/spec/rails_app/public/javascripts/controls.js +963 -0
  95. data/spec/rails_app/public/javascripts/dragdrop.js +972 -0
  96. data/spec/rails_app/public/javascripts/effects.js +1120 -0
  97. data/spec/rails_app/public/javascripts/prototype.js +4225 -0
  98. data/spec/rails_app/public/robots.txt +5 -0
  99. data/spec/rails_app/script/about +3 -0
  100. data/spec/rails_app/script/console +3 -0
  101. data/spec/rails_app/script/destroy +3 -0
  102. data/spec/rails_app/script/generate +3 -0
  103. data/spec/rails_app/script/performance/benchmarker +3 -0
  104. data/spec/rails_app/script/performance/profiler +3 -0
  105. data/spec/rails_app/script/performance/request +3 -0
  106. data/spec/rails_app/script/plugin +3 -0
  107. data/spec/rails_app/script/process/inspector +3 -0
  108. data/spec/rails_app/script/process/reaper +3 -0
  109. data/spec/rails_app/script/process/spawner +3 -0
  110. data/spec/rails_app/script/runner +3 -0
  111. data/spec/rails_app/script/server +3 -0
  112. data/spec/request/mongrel_spec.rb +39 -0
  113. data/spec/request/parser_spec.rb +254 -0
  114. data/spec/request/persistent_spec.rb +35 -0
  115. data/spec/request/processing_spec.rb +50 -0
  116. data/spec/response_spec.rb +91 -0
  117. data/spec/runner_spec.rb +168 -0
  118. data/spec/server/builder_spec.rb +44 -0
  119. data/spec/server/pipelining_spec.rb +110 -0
  120. data/spec/server/robustness_spec.rb +34 -0
  121. data/spec/server/stopping_spec.rb +55 -0
  122. data/spec/server/swiftiply.yml +6 -0
  123. data/spec/server/swiftiply_spec.rb +32 -0
  124. data/spec/server/tcp_spec.rb +57 -0
  125. data/spec/server/threaded_spec.rb +27 -0
  126. data/spec/server/unix_socket_spec.rb +26 -0
  127. data/spec/server_spec.rb +100 -0
  128. data/spec/spec_helper.rb +220 -0
  129. data/tasks/announce.rake +22 -0
  130. data/tasks/deploy.rake +13 -0
  131. data/tasks/email.erb +30 -0
  132. data/tasks/gem.rake +66 -0
  133. data/tasks/rdoc.rake +25 -0
  134. data/tasks/site.rake +15 -0
  135. data/tasks/spec.rake +43 -0
  136. data/tasks/stats.rake +28 -0
  137. metadata +251 -0
@@ -0,0 +1,22 @@
1
+ require 'erb'
2
+
3
+ MSG_TEMPLATE = File.dirname(__FILE__) + '/email.erb'
4
+ SEND_TO = %w(thin-ruby@googlegroups.com ruby-talk@ruby-lang.org)
5
+
6
+ desc 'Generate a template for the new version annoucement'
7
+ task :ann do
8
+ msg = ERB.new(File.read(MSG_TEMPLATE)).result(binding)
9
+
10
+ body = <<END_OF_MESSAGE
11
+ To: #{SEND_TO.join(', ')}
12
+ Subject: [ANN] Thin #{Thin::VERSION::STRING} #{Thin::VERSION::CODENAME} release
13
+
14
+ #{msg}
15
+ END_OF_MESSAGE
16
+
17
+ fork { `echo "#{body}" | mate` }
18
+ end
19
+
20
+ def changelog
21
+ File.read('CHANGELOG').split("==")[1].split("\n")[1..-1].join("\n")
22
+ end
data/tasks/deploy.rake ADDED
@@ -0,0 +1,13 @@
1
+ namespace :deploy do
2
+ task :site => %w(site:upload rdoc:upload)
3
+
4
+ desc 'Deploy on rubyforge'
5
+ task :gem => %w(gem:upload_rubyforge deploy:site)
6
+ end
7
+ desc 'Deploy on all servers'
8
+ task :deploy => "deploy:gem"
9
+
10
+ def upload(file, to, options={})
11
+ sh %{ssh macournoyer@code.macournoyer.com "rm -rf code.macournoyer.com/#{to}"} if options[:replace]
12
+ sh %{scp -rq #{file} macournoyer@code.macournoyer.com:code.macournoyer.com/#{to}}
13
+ end
data/tasks/email.erb ADDED
@@ -0,0 +1,30 @@
1
+ Hey all,
2
+
3
+ Thin version <%= Thin::VERSION::STRING %> (codename <%= Thin::VERSION::CODENAME %>) is out!
4
+
5
+ == What's new?
6
+
7
+ <%= changelog %>
8
+
9
+ == Get it!
10
+
11
+ Install Thin from RubyForge:
12
+
13
+ gem install thin
14
+
15
+ Or using my mirror:
16
+
17
+ gem install thin --source http://code.macournoyer.com
18
+
19
+ == Contribute
20
+
21
+ Site: http://code.macournoyer.com/thin/
22
+ Group: http://groups.google.com/group/thin-ruby/topics
23
+ Bugs: http://thin.lighthouseapp.com/projects/7212-thin
24
+ Code: http://github.com/macournoyer/thin
25
+ IRC: #thin on freenode
26
+
27
+ Thanks to all the people who contributed to Thin, EventMachine, Rack and Mongrel.
28
+
29
+ Marc-Andre Cournoyer
30
+ http://macournoyer.com/
data/tasks/gem.rake ADDED
@@ -0,0 +1,66 @@
1
+ require 'rake/gempackagetask'
2
+ require 'yaml'
3
+
4
+ task :clean => :clobber_package
5
+
6
+ Thin::GemSpec = Gem::Specification.new do |s|
7
+ s.name = Thin::NAME
8
+ s.version = Thin::VERSION::STRING
9
+ s.platform = WIN ? Gem::Platform::CURRENT : Gem::Platform::RUBY
10
+ s.summary =
11
+ s.description = "A thin and fast web server"
12
+ s.author = "Marc-Andre Cournoyer"
13
+ s.email = 'macournoyer@gmail.com'
14
+ s.homepage = 'http://code.macournoyer.com/thin/'
15
+ s.rubyforge_project = 'thin'
16
+ s.has_rdoc = true
17
+ s.executables = %w(thin)
18
+
19
+ s.required_ruby_version = '>= 1.8.5'
20
+
21
+ s.add_dependency 'rack', '>= 1.0.0'
22
+ s.add_dependency 'eventmachine', '>= 0.12.6'
23
+ unless WIN
24
+ s.add_dependency 'daemons', '>= 1.0.9'
25
+ end
26
+
27
+ s.files = %w(COPYING CHANGELOG README Rakefile) +
28
+ Dir.glob("{benchmark,bin,doc,example,lib,spec,tasks}/**/*") +
29
+ Dir.glob("ext/**/*.{h,c,rb,rl}")
30
+
31
+ if WIN
32
+ s.files += ["lib/thin_parser.#{Config::CONFIG['DLEXT']}"]
33
+ else
34
+ s.extensions = FileList["ext/**/extconf.rb"].to_a
35
+ end
36
+
37
+ s.require_path = "lib"
38
+ s.bindir = "bin"
39
+ end
40
+
41
+ Rake::GemPackageTask.new(Thin::GemSpec) do |p|
42
+ p.gem_spec = Thin::GemSpec
43
+ end
44
+
45
+ task :tag_warn do
46
+ puts "*" * 40
47
+ puts "Don't forget to tag the release:"
48
+ puts
49
+ puts " git tag -m 'Tagging #{Thin::SERVER}' -a v#{Thin::VERSION::STRING}"
50
+ puts
51
+ puts "or run rake tag"
52
+ puts "*" * 40
53
+ end
54
+ task :tag do
55
+ sh "git tag -m 'Tagging #{Thin::SERVER}' -a v#{Thin::VERSION::STRING}"
56
+ end
57
+ task :gem => :tag_warn
58
+
59
+ namespace :gem do
60
+ desc 'Upload gems to gemcutter.org'
61
+ task :push do
62
+ Dir["pkg/#{Thin::GemSpec.full_name}*.gem"].each do |file|
63
+ sh "gem push #{file}"
64
+ end
65
+ end
66
+ end
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,25 @@
1
+ require 'rake/rdoctask'
2
+
3
+ CLEAN.include %w(doc/rdoc)
4
+
5
+ Rake::RDocTask.new do |rdoc|
6
+ rdoc.rdoc_dir = 'doc/rdoc'
7
+ rdoc.options += ['--quiet', '--title', Thin::NAME,
8
+ "--opname", "index.html",
9
+ "--line-numbers",
10
+ "--main", "README",
11
+ "--inline-source"]
12
+ rdoc.template = "site/rdoc.rb"
13
+ rdoc.main = "README"
14
+ rdoc.title = Thin::NAME
15
+ rdoc.rdoc_files.add %w(README) +
16
+ FileList['lib/**/*.rb'] +
17
+ FileList['bin/*']
18
+ end
19
+
20
+ namespace :rdoc do
21
+ desc 'Upload rdoc to code.macournoyer.com'
22
+ task :upload => :rdoc do
23
+ upload "doc/rdoc", 'thin/doc', :replace => true
24
+ end
25
+ end
data/tasks/site.rake ADDED
@@ -0,0 +1,15 @@
1
+ namespace :site do
2
+ task :build do
3
+ mkdir_p 'tmp/site/images'
4
+ cd 'tmp/site' do
5
+ sh "SITE_ROOT='/thin' ruby ../../site/thin.rb --dump"
6
+ end
7
+ cp 'site/style.css', 'tmp/site'
8
+ cp_r Dir['site/images/*'], 'tmp/site/images'
9
+ end
10
+
11
+ desc 'Upload website to code.macournoyer.com'
12
+ task :upload => 'site:build' do
13
+ upload 'tmp/site/*', 'thin'
14
+ end
15
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,43 @@
1
+ CLEAN.include %w(coverage tmp log)
2
+
3
+ require 'spec/rake/spectask'
4
+
5
+ PERF_SPECS = FileList['spec/perf/*_spec.rb']
6
+ WIN_SPECS = %w(
7
+ spec/backends/unix_server_spec.rb
8
+ spec/controllers/service_spec.rb
9
+ spec/daemonizing_spec.rb
10
+ spec/server/unix_socket_spec.rb
11
+ spec/server/swiftiply_spec.rb
12
+ )
13
+ # HACK Event machine causes some problems when running multiple
14
+ # tests in the same VM so we split the specs in 2 before I find
15
+ # a better solution...
16
+ SPECS2 = %w(spec/server/threaded_spec.rb spec/server/tcp_spec.rb)
17
+ SPECS = FileList['spec/**/*_spec.rb'] - PERF_SPECS - SPECS2
18
+
19
+ def spec_task(name, specs)
20
+ Spec::Rake::SpecTask.new(name) do |t|
21
+ t.libs << 'lib'
22
+ t.spec_opts = %w(-fs -c)
23
+ t.spec_files = specs
24
+ end
25
+ end
26
+
27
+ desc "Run all examples"
28
+ spec_task :spec, SPECS
29
+ spec_task :spec2, SPECS2
30
+ task :spec => [:compile, :spec2]
31
+
32
+ desc "Run all performance examples"
33
+ spec_task 'spec:perf', PERF_SPECS
34
+
35
+ task :check_benchmark_unit_gem do
36
+ begin
37
+ require 'benchmark_unit'
38
+ rescue LoadError
39
+ abort "To run specs, install benchmark_unit gem"
40
+ end
41
+ end
42
+
43
+ task 'spec:perf' => :check_benchmark_unit_gem
data/tasks/stats.rake ADDED
@@ -0,0 +1,28 @@
1
+ desc 'Show some stats about the code'
2
+ task :stats do
3
+ line_count = proc do |path|
4
+ Dir[path].collect { |f| File.open(f).readlines.reject { |l| l =~ /(^\s*(\#|\/\*))|^\s*$/ }.size }.inject(0){ |sum,n| sum += n }
5
+ end
6
+ comment_count = proc do |path|
7
+ Dir[path].collect { |f| File.open(f).readlines.select { |l| l =~ /^\s*\#/ }.size }.inject(0) { |sum,n| sum += n }
8
+ end
9
+ lib = line_count['lib/**/*.rb']
10
+ comment = comment_count['lib/**/*.rb']
11
+ ext = line_count['ext/**/*.{c,h}']
12
+ spec = line_count['spec/**/*.rb']
13
+
14
+ comment_ratio = '%1.2f' % (comment.to_f / lib.to_f)
15
+ spec_ratio = '%1.2f' % (spec.to_f / lib.to_f)
16
+
17
+ puts '/======================\\'
18
+ puts '| Part LOC |'
19
+ puts '|======================|'
20
+ puts "| lib #{lib.to_s.ljust(5)}|"
21
+ puts "| lib comments #{comment.to_s.ljust(5)}|"
22
+ puts "| ext #{ext.to_s.ljust(5)}|"
23
+ puts "| spec #{spec.to_s.ljust(5)}|"
24
+ puts '| ratios: |'
25
+ puts "| lib/comment #{comment_ratio.to_s.ljust(5)}|"
26
+ puts "| lib/spec #{spec_ratio.to_s.ljust(5)}|"
27
+ puts '\======================/'
28
+ end
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: steamcannon-thin
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 2
9
+ - 8
10
+ version: 1.2.8
11
+ platform: ruby
12
+ authors:
13
+ - Marc-Andre Cournoyer
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-08 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rack
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
34
+ version: 1.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: eventmachine
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 35
46
+ segments:
47
+ - 0
48
+ - 12
49
+ - 6
50
+ version: 0.12.6
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: daemons
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 5
62
+ segments:
63
+ - 1
64
+ - 0
65
+ - 9
66
+ version: 1.0.9
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ description: A thin and fast web server
70
+ email: macournoyer@gmail.com
71
+ executables:
72
+ - thin
73
+ extensions:
74
+ - ext/thin_parser/extconf.rb
75
+ extra_rdoc_files: []
76
+
77
+ files:
78
+ - COPYING
79
+ - CHANGELOG
80
+ - README
81
+ - Rakefile
82
+ - benchmark/abc
83
+ - benchmark/runner
84
+ - benchmark/benchmarker.rb
85
+ - bin/thin
86
+ - example/async_chat.ru
87
+ - example/async_app.ru
88
+ - example/config.ru
89
+ - example/thin_solaris_smf.erb
90
+ - example/monit_unixsock
91
+ - example/async_tailer.ru
92
+ - example/monit_sockets
93
+ - example/thin_solaris_smf.readme.txt
94
+ - example/thin.god
95
+ - example/adapter.rb
96
+ - example/vlad.rake
97
+ - example/ramaze.ru
98
+ - example/myapp.rb
99
+ - lib/thin.rb
100
+ - lib/thin_parser.so
101
+ - lib/rack/adapter/loader.rb
102
+ - lib/rack/adapter/rails.rb
103
+ - lib/thin/headers.rb
104
+ - lib/thin/response.rb
105
+ - lib/thin/logging.rb
106
+ - lib/thin/stats.rb
107
+ - lib/thin/backends/unix_server.rb
108
+ - lib/thin/backends/tcp_server.rb
109
+ - lib/thin/backends/base.rb
110
+ - lib/thin/backends/swiftiply_client.rb
111
+ - lib/thin/controllers/service.sh.erb
112
+ - lib/thin/controllers/cluster.rb
113
+ - lib/thin/controllers/service.rb
114
+ - lib/thin/controllers/controller.rb
115
+ - lib/thin/daemonizing.rb
116
+ - lib/thin/version.rb
117
+ - lib/thin/runner.rb
118
+ - lib/thin/statuses.rb
119
+ - lib/thin/request.rb
120
+ - lib/thin/connection.rb
121
+ - lib/thin/command.rb
122
+ - lib/thin/server.rb
123
+ - lib/thin/stats.html.erb
124
+ - spec/connection_spec.rb
125
+ - spec/server_spec.rb
126
+ - spec/backends/unix_server_spec.rb
127
+ - spec/backends/tcp_server_spec.rb
128
+ - spec/backends/swiftiply_client_spec.rb
129
+ - spec/configs/cluster.yml
130
+ - spec/configs/single.yml
131
+ - spec/runner_spec.rb
132
+ - spec/command_spec.rb
133
+ - spec/perf/response_perf_spec.rb
134
+ - spec/perf/request_perf_spec.rb
135
+ - spec/perf/server_perf_spec.rb
136
+ - spec/logging_spec.rb
137
+ - spec/headers_spec.rb
138
+ - spec/controllers/cluster_spec.rb
139
+ - spec/controllers/controller_spec.rb
140
+ - spec/controllers/service_spec.rb
141
+ - spec/rack/loader_spec.rb
142
+ - spec/rack/rails_adapter_spec.rb
143
+ - spec/spec_helper.rb
144
+ - spec/response_spec.rb
145
+ - spec/rails_app/app/views/simple/index.html.erb
146
+ - spec/rails_app/app/controllers/application.rb
147
+ - spec/rails_app/app/controllers/simple_controller.rb
148
+ - spec/rails_app/app/helpers/application_helper.rb
149
+ - spec/rails_app/config/routes.rb
150
+ - spec/rails_app/config/initializers/mime_types.rb
151
+ - spec/rails_app/config/initializers/inflections.rb
152
+ - spec/rails_app/config/boot.rb
153
+ - spec/rails_app/config/environments/test.rb
154
+ - spec/rails_app/config/environments/production.rb
155
+ - spec/rails_app/config/environments/development.rb
156
+ - spec/rails_app/config/environment.rb
157
+ - spec/rails_app/script/destroy
158
+ - spec/rails_app/script/generate
159
+ - spec/rails_app/script/console
160
+ - spec/rails_app/script/runner
161
+ - spec/rails_app/script/plugin
162
+ - spec/rails_app/script/process/spawner
163
+ - spec/rails_app/script/process/reaper
164
+ - spec/rails_app/script/process/inspector
165
+ - spec/rails_app/script/server
166
+ - spec/rails_app/script/performance/request
167
+ - spec/rails_app/script/performance/benchmarker
168
+ - spec/rails_app/script/performance/profiler
169
+ - spec/rails_app/script/about
170
+ - spec/rails_app/public/422.html
171
+ - spec/rails_app/public/500.html
172
+ - spec/rails_app/public/dispatch.cgi
173
+ - spec/rails_app/public/robots.txt
174
+ - spec/rails_app/public/index.html
175
+ - spec/rails_app/public/images/rails.png
176
+ - spec/rails_app/public/dispatch.rb
177
+ - spec/rails_app/public/favicon.ico
178
+ - spec/rails_app/public/dispatch.fcgi
179
+ - spec/rails_app/public/404.html
180
+ - spec/rails_app/public/javascripts/dragdrop.js
181
+ - spec/rails_app/public/javascripts/effects.js
182
+ - spec/rails_app/public/javascripts/controls.js
183
+ - spec/rails_app/public/javascripts/application.js
184
+ - spec/rails_app/public/javascripts/prototype.js
185
+ - spec/daemonizing_spec.rb
186
+ - spec/request/processing_spec.rb
187
+ - spec/request/mongrel_spec.rb
188
+ - spec/request/persistent_spec.rb
189
+ - spec/request/parser_spec.rb
190
+ - spec/server/swiftiply.yml
191
+ - spec/server/robustness_spec.rb
192
+ - spec/server/swiftiply_spec.rb
193
+ - spec/server/pipelining_spec.rb
194
+ - spec/server/stopping_spec.rb
195
+ - spec/server/tcp_spec.rb
196
+ - spec/server/threaded_spec.rb
197
+ - spec/server/unix_socket_spec.rb
198
+ - spec/server/builder_spec.rb
199
+ - tasks/stats.rake
200
+ - tasks/deploy.rake
201
+ - tasks/email.erb
202
+ - tasks/gem.rake
203
+ - tasks/rdoc.rake
204
+ - tasks/site.rake
205
+ - tasks/spec.rake
206
+ - tasks/announce.rake
207
+ - ext/thin_parser/parser.h
208
+ - ext/thin_parser/ext_help.h
209
+ - ext/thin_parser/parser.c
210
+ - ext/thin_parser/thin.c
211
+ - ext/thin_parser/extconf.rb
212
+ - ext/thin_parser/common.rl
213
+ - ext/thin_parser/parser.rl
214
+ has_rdoc: true
215
+ homepage: http://code.macournoyer.com/thin/
216
+ licenses: []
217
+
218
+ post_install_message:
219
+ rdoc_options: []
220
+
221
+ require_paths:
222
+ - lib
223
+ required_ruby_version: !ruby/object:Gem::Requirement
224
+ none: false
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ hash: 61
229
+ segments:
230
+ - 1
231
+ - 8
232
+ - 5
233
+ version: 1.8.5
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ hash: 3
240
+ segments:
241
+ - 0
242
+ version: "0"
243
+ requirements: []
244
+
245
+ rubyforge_project: thin
246
+ rubygems_version: 1.3.7
247
+ signing_key:
248
+ specification_version: 3
249
+ summary: A thin and fast web server
250
+ test_files: []
251
+