macournoyer-thin 1.0.1

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 (135) hide show
  1. data/CHANGELOG +233 -0
  2. data/COPYING +18 -0
  3. data/README +77 -0
  4. data/Rakefile +13 -0
  5. data/benchmark/abc +51 -0
  6. data/benchmark/benchmarker.rb +80 -0
  7. data/benchmark/runner +79 -0
  8. data/bin/thin +6 -0
  9. data/example/adapter.rb +32 -0
  10. data/example/config.ru +23 -0
  11. data/example/monit_sockets +20 -0
  12. data/example/monit_unixsock +20 -0
  13. data/example/myapp.rb +1 -0
  14. data/example/ramaze.ru +12 -0
  15. data/example/thin.god +80 -0
  16. data/example/thin_solaris_smf.erb +36 -0
  17. data/example/thin_solaris_smf.readme.txt +150 -0
  18. data/example/vlad.rake +64 -0
  19. data/ext/thin_parser/common.rl +55 -0
  20. data/ext/thin_parser/ext_help.h +14 -0
  21. data/ext/thin_parser/extconf.rb +6 -0
  22. data/ext/thin_parser/parser.c +452 -0
  23. data/ext/thin_parser/parser.h +49 -0
  24. data/ext/thin_parser/parser.rl +157 -0
  25. data/ext/thin_parser/thin.c +433 -0
  26. data/lib/rack/adapter/loader.rb +79 -0
  27. data/lib/rack/adapter/rails.rb +173 -0
  28. data/lib/rack/handler/thin.rb +18 -0
  29. data/lib/thin.rb +50 -0
  30. data/lib/thin/backends/base.rb +141 -0
  31. data/lib/thin/backends/swiftiply_client.rb +56 -0
  32. data/lib/thin/backends/tcp_server.rb +29 -0
  33. data/lib/thin/backends/unix_server.rb +51 -0
  34. data/lib/thin/command.rb +52 -0
  35. data/lib/thin/connection.rb +186 -0
  36. data/lib/thin/controllers/cluster.rb +127 -0
  37. data/lib/thin/controllers/controller.rb +183 -0
  38. data/lib/thin/controllers/service.rb +75 -0
  39. data/lib/thin/controllers/service.sh.erb +39 -0
  40. data/lib/thin/daemonizing.rb +163 -0
  41. data/lib/thin/headers.rb +39 -0
  42. data/lib/thin/logging.rb +54 -0
  43. data/lib/thin/request.rb +147 -0
  44. data/lib/thin/response.rb +99 -0
  45. data/lib/thin/runner.rb +208 -0
  46. data/lib/thin/server.rb +241 -0
  47. data/lib/thin/stats.html.erb +216 -0
  48. data/lib/thin/stats.rb +52 -0
  49. data/lib/thin/statuses.rb +43 -0
  50. data/lib/thin/version.rb +32 -0
  51. data/spec/backends/swiftiply_client_spec.rb +66 -0
  52. data/spec/backends/tcp_server_spec.rb +33 -0
  53. data/spec/backends/unix_server_spec.rb +37 -0
  54. data/spec/command_spec.rb +20 -0
  55. data/spec/configs/cluster.yml +9 -0
  56. data/spec/configs/single.yml +9 -0
  57. data/spec/connection_spec.rb +105 -0
  58. data/spec/controllers/cluster_spec.rb +212 -0
  59. data/spec/controllers/controller_spec.rb +129 -0
  60. data/spec/controllers/service_spec.rb +50 -0
  61. data/spec/daemonizing_spec.rb +192 -0
  62. data/spec/headers_spec.rb +40 -0
  63. data/spec/logging_spec.rb +46 -0
  64. data/spec/perf/request_perf_spec.rb +50 -0
  65. data/spec/perf/response_perf_spec.rb +19 -0
  66. data/spec/perf/server_perf_spec.rb +39 -0
  67. data/spec/rack/loader_spec.rb +29 -0
  68. data/spec/rack/rails_adapter_spec.rb +106 -0
  69. data/spec/rails_app/app/controllers/application.rb +10 -0
  70. data/spec/rails_app/app/controllers/simple_controller.rb +19 -0
  71. data/spec/rails_app/app/helpers/application_helper.rb +3 -0
  72. data/spec/rails_app/app/views/simple/index.html.erb +15 -0
  73. data/spec/rails_app/config/boot.rb +109 -0
  74. data/spec/rails_app/config/environment.rb +64 -0
  75. data/spec/rails_app/config/environments/development.rb +18 -0
  76. data/spec/rails_app/config/environments/production.rb +19 -0
  77. data/spec/rails_app/config/environments/test.rb +22 -0
  78. data/spec/rails_app/config/initializers/inflections.rb +10 -0
  79. data/spec/rails_app/config/initializers/mime_types.rb +5 -0
  80. data/spec/rails_app/config/routes.rb +35 -0
  81. data/spec/rails_app/public/404.html +30 -0
  82. data/spec/rails_app/public/422.html +30 -0
  83. data/spec/rails_app/public/500.html +30 -0
  84. data/spec/rails_app/public/dispatch.cgi +10 -0
  85. data/spec/rails_app/public/dispatch.fcgi +24 -0
  86. data/spec/rails_app/public/dispatch.rb +10 -0
  87. data/spec/rails_app/public/favicon.ico +0 -0
  88. data/spec/rails_app/public/images/rails.png +0 -0
  89. data/spec/rails_app/public/index.html +277 -0
  90. data/spec/rails_app/public/javascripts/application.js +2 -0
  91. data/spec/rails_app/public/javascripts/controls.js +963 -0
  92. data/spec/rails_app/public/javascripts/dragdrop.js +972 -0
  93. data/spec/rails_app/public/javascripts/effects.js +1120 -0
  94. data/spec/rails_app/public/javascripts/prototype.js +4225 -0
  95. data/spec/rails_app/public/robots.txt +5 -0
  96. data/spec/rails_app/script/about +3 -0
  97. data/spec/rails_app/script/console +3 -0
  98. data/spec/rails_app/script/destroy +3 -0
  99. data/spec/rails_app/script/generate +3 -0
  100. data/spec/rails_app/script/performance/benchmarker +3 -0
  101. data/spec/rails_app/script/performance/profiler +3 -0
  102. data/spec/rails_app/script/performance/request +3 -0
  103. data/spec/rails_app/script/plugin +3 -0
  104. data/spec/rails_app/script/process/inspector +3 -0
  105. data/spec/rails_app/script/process/reaper +3 -0
  106. data/spec/rails_app/script/process/spawner +3 -0
  107. data/spec/rails_app/script/runner +3 -0
  108. data/spec/rails_app/script/server +3 -0
  109. data/spec/request/mongrel_spec.rb +39 -0
  110. data/spec/request/parser_spec.rb +215 -0
  111. data/spec/request/persistent_spec.rb +35 -0
  112. data/spec/request/processing_spec.rb +45 -0
  113. data/spec/response_spec.rb +83 -0
  114. data/spec/runner_spec.rb +167 -0
  115. data/spec/server/builder_spec.rb +44 -0
  116. data/spec/server/pipelining_spec.rb +109 -0
  117. data/spec/server/robustness_spec.rb +34 -0
  118. data/spec/server/stopping_spec.rb +45 -0
  119. data/spec/server/swiftiply.yml +6 -0
  120. data/spec/server/swiftiply_spec.rb +32 -0
  121. data/spec/server/tcp_spec.rb +57 -0
  122. data/spec/server/threaded_spec.rb +27 -0
  123. data/spec/server/unix_socket_spec.rb +26 -0
  124. data/spec/server_spec.rb +96 -0
  125. data/spec/spec_helper.rb +219 -0
  126. data/tasks/announce.rake +22 -0
  127. data/tasks/deploy.rake +16 -0
  128. data/tasks/email.erb +30 -0
  129. data/tasks/ext.rake +42 -0
  130. data/tasks/gem.rake +108 -0
  131. data/tasks/rdoc.rake +25 -0
  132. data/tasks/site.rake +15 -0
  133. data/tasks/spec.rake +48 -0
  134. data/tasks/stats.rake +28 -0
  135. metadata +248 -0
data/tasks/gem.rake ADDED
@@ -0,0 +1,108 @@
1
+ require 'rake/gempackagetask'
2
+ require 'yaml'
3
+
4
+ WIN_SUFFIX = ENV['WIN_SUFFIX'] || 'i386-mswin32'
5
+
6
+ task :clean => :clobber_package
7
+
8
+ spec = Gem::Specification.new do |s|
9
+ s.name = Thin::NAME
10
+ s.version = Thin::VERSION::STRING
11
+ s.platform = WIN ? Gem::Platform::CURRENT : Gem::Platform::RUBY
12
+ s.summary =
13
+ s.description = "A thin and fast web server"
14
+ s.author = "Marc-Andre Cournoyer"
15
+ s.email = 'macournoyer@gmail.com'
16
+ s.homepage = 'http://code.macournoyer.com/thin/'
17
+ s.rubyforge_project = 'thin'
18
+ s.has_rdoc = true
19
+ s.executables = %w(thin)
20
+
21
+ s.required_ruby_version = '>= 1.8.5'
22
+
23
+ s.add_dependency 'rack', '>= 0.3.0'
24
+ s.add_dependency 'eventmachine', '>= 0.12.0'
25
+ unless WIN
26
+ s.add_dependency 'daemons', '>= 1.0.9'
27
+ end
28
+
29
+ s.files = %w(COPYING CHANGELOG README Rakefile) +
30
+ Dir.glob("{benchmark,bin,doc,example,lib,spec,tasks}/**/*") +
31
+ Dir.glob("ext/**/*.{h,c,rb,rl}")
32
+
33
+ if WIN
34
+ s.files += ["lib/thin_parser.#{Config::CONFIG['DLEXT']}"]
35
+ else
36
+ s.extensions = FileList["ext/**/extconf.rb"].to_a
37
+ end
38
+
39
+ s.require_path = "lib"
40
+ s.bindir = "bin"
41
+ end
42
+
43
+ Rake::GemPackageTask.new(spec) do |p|
44
+ p.gem_spec = spec
45
+ end
46
+
47
+ task :tag_warn do
48
+ puts "*" * 40
49
+ puts "Don't forget to tag the release:"
50
+ puts
51
+ puts " git tag -m 'Tagging #{Thin::SERVER}' -a v#{Thin::VERSION::STRING}"
52
+ puts
53
+ puts "or run rake tag"
54
+ puts "*" * 40
55
+ end
56
+ task :tag do
57
+ sh "git tag -m 'Tagging #{Thin::SERVER}' -a v#{Thin::VERSION::STRING}"
58
+ end
59
+ task :gem => :tag_warn
60
+
61
+ namespace :gem do
62
+ desc "Update the gemspec for GitHub's gem server"
63
+ task :github do
64
+ File.open("thin.gemspec", 'w') { |f| f << YAML.dump(spec) }
65
+ end
66
+
67
+ desc 'Upload gem to code.macournoyer.com'
68
+ task :upload => :gem do
69
+ upload "pkg/#{spec.full_name}.gem", 'gems'
70
+ system 'ssh macournoyer@code.macournoyer.com "cd code.macournoyer.com && gem generate_index"'
71
+ end
72
+
73
+ namespace :upload do
74
+ desc 'Upload the precompiled win32 gem to code.macournoyer.com'
75
+ task :win do
76
+ upload "pkg/#{spec.full_name}-#{WIN_SUFFIX}.gem", 'gems'
77
+ system 'ssh macournoyer@code.macournoyer.com "cd code.macournoyer.com && gem generate_index"'
78
+ end
79
+
80
+ desc 'Upload gems (ruby & win32) to rubyforge.org'
81
+ task :rubyforge => :gem do
82
+ sh 'rubyforge login'
83
+ sh "rubyforge add_release thin thin #{Thin::VERSION::STRING} pkg/#{spec.full_name}.gem"
84
+ sh "rubyforge add_file thin thin #{Thin::VERSION::STRING} pkg/#{spec.full_name}.gem"
85
+ sh "rubyforge add_file thin thin #{Thin::VERSION::STRING} pkg/#{spec.full_name}-#{WIN_SUFFIX}.gem"
86
+ end
87
+ end
88
+
89
+ desc 'Download the Windows gem from Kevin repo'
90
+ task 'download:win' => 'pkg' do
91
+ cd 'pkg' do
92
+ `wget http://rubygems.bantamtech.com/ruby18/gems/#{spec.full_name}-#{WIN_SUFFIX}.gem`
93
+ end
94
+ end
95
+ end
96
+
97
+ task :install => [:clobber, :compile, :package] do
98
+ sh "#{SUDO} #{gem} install pkg/#{spec.full_name}.gem"
99
+ end
100
+
101
+ task :uninstall => :clean do
102
+ sh "#{SUDO} #{gem} uninstall -v #{Thin::VERSION::STRING} -x #{Thin::NAME}"
103
+ end
104
+
105
+
106
+ def gem
107
+ RUBY_1_9 ? 'gem19' : 'gem'
108
+ 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,48 @@
1
+ CLEAN.include %w(coverage tmp log)
2
+
3
+ if RUBY_1_9 # RSpec not yet working w/ Ruby 1.9
4
+ task :spec do
5
+ warn 'RSpec not yet supporting Ruby 1.9, so cannot run the specs :('
6
+ end
7
+ else
8
+ require 'spec/rake/spectask'
9
+
10
+ PERF_SPECS = FileList['spec/perf/*_spec.rb']
11
+ WIN_SPECS = %w(
12
+ spec/backends/unix_server_spec.rb
13
+ spec/controllers/service_spec.rb
14
+ spec/daemonizing_spec.rb
15
+ spec/server/unix_socket_spec.rb
16
+ spec/server/swiftiply_spec.rb
17
+ )
18
+ # HACK Event machine causes some problems when running multiple
19
+ # tests in the same VM so we split the specs in 2 before I find
20
+ # a better solution...
21
+ SPECS2 = %w(spec/server/threaded_spec.rb spec/server/tcp_spec.rb)
22
+ SPECS = FileList['spec/**/*_spec.rb'] - PERF_SPECS - SPECS2
23
+
24
+ def spec_task(name, specs)
25
+ Spec::Rake::SpecTask.new(name) do |t|
26
+ t.spec_opts = %w(-fs -c)
27
+ t.spec_files = specs
28
+ end
29
+ end
30
+
31
+ desc "Run all examples"
32
+ spec_task :spec, SPECS
33
+ spec_task :spec2, SPECS2
34
+ task :spec => [:compile, :spec2]
35
+
36
+ desc "Run all performance examples"
37
+ spec_task 'spec:perf', PERF_SPECS
38
+
39
+ task :check_benchmark_unit_gem do
40
+ begin
41
+ require 'benchmark_unit'
42
+ rescue LoadError
43
+ abort "To run specs, install benchmark_unit gem"
44
+ end
45
+ end
46
+
47
+ task 'spec:perf' => :check_benchmark_unit_gem
48
+ end
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,248 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: macournoyer-thin
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marc-Andre Cournoyer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-09 21:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.3.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: eventmachine
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.12.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: daemons
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.9
44
+ version:
45
+ description: A thin and fast web server
46
+ email: macournoyer@gmail.com
47
+ executables:
48
+ - thin
49
+ extensions:
50
+ - ext/thin_parser/extconf.rb
51
+ extra_rdoc_files: []
52
+
53
+ files:
54
+ - COPYING
55
+ - CHANGELOG
56
+ - README
57
+ - Rakefile
58
+ - benchmark/abc
59
+ - benchmark/benchmarker.rb
60
+ - benchmark/runner
61
+ - bin/thin
62
+ - example/adapter.rb
63
+ - example/config.ru
64
+ - example/monit_sockets
65
+ - example/monit_unixsock
66
+ - example/myapp.rb
67
+ - example/ramaze.ru
68
+ - example/thin.god
69
+ - example/thin_solaris_smf.erb
70
+ - example/thin_solaris_smf.readme.txt
71
+ - example/vlad.rake
72
+ - lib/rack
73
+ - lib/rack/adapter
74
+ - lib/rack/adapter/loader.rb
75
+ - lib/rack/adapter/rails.rb
76
+ - lib/rack/handler
77
+ - lib/rack/handler/thin.rb
78
+ - lib/thin
79
+ - lib/thin/backends
80
+ - lib/thin/backends/base.rb
81
+ - lib/thin/backends/swiftiply_client.rb
82
+ - lib/thin/backends/tcp_server.rb
83
+ - lib/thin/backends/unix_server.rb
84
+ - lib/thin/command.rb
85
+ - lib/thin/connection.rb
86
+ - lib/thin/controllers
87
+ - lib/thin/controllers/cluster.rb
88
+ - lib/thin/controllers/controller.rb
89
+ - lib/thin/controllers/service.rb
90
+ - lib/thin/controllers/service.sh.erb
91
+ - lib/thin/daemonizing.rb
92
+ - lib/thin/headers.rb
93
+ - lib/thin/logging.rb
94
+ - lib/thin/request.rb
95
+ - lib/thin/response.rb
96
+ - lib/thin/runner.rb
97
+ - lib/thin/server.rb
98
+ - lib/thin/stats.html.erb
99
+ - lib/thin/stats.rb
100
+ - lib/thin/statuses.rb
101
+ - lib/thin/version.rb
102
+ - lib/thin.rb
103
+ - lib/thin_parser.bundle
104
+ - spec/backends
105
+ - spec/backends/swiftiply_client_spec.rb
106
+ - spec/backends/tcp_server_spec.rb
107
+ - spec/backends/unix_server_spec.rb
108
+ - spec/command_spec.rb
109
+ - spec/configs
110
+ - spec/configs/cluster.yml
111
+ - spec/configs/single.yml
112
+ - spec/connection_spec.rb
113
+ - spec/controllers
114
+ - spec/controllers/cluster_spec.rb
115
+ - spec/controllers/controller_spec.rb
116
+ - spec/controllers/service_spec.rb
117
+ - spec/daemonizing_spec.rb
118
+ - spec/headers_spec.rb
119
+ - spec/logging_spec.rb
120
+ - spec/perf
121
+ - spec/perf/request_perf_spec.rb
122
+ - spec/perf/response_perf_spec.rb
123
+ - spec/perf/server_perf_spec.rb
124
+ - spec/rack
125
+ - spec/rack/loader_spec.rb
126
+ - spec/rack/rails_adapter_spec.rb
127
+ - spec/rails_app
128
+ - spec/rails_app/app
129
+ - spec/rails_app/app/controllers
130
+ - spec/rails_app/app/controllers/application.rb
131
+ - spec/rails_app/app/controllers/simple_controller.rb
132
+ - spec/rails_app/app/helpers
133
+ - spec/rails_app/app/helpers/application_helper.rb
134
+ - spec/rails_app/app/views
135
+ - spec/rails_app/app/views/simple
136
+ - spec/rails_app/app/views/simple/index.html.erb
137
+ - spec/rails_app/config
138
+ - spec/rails_app/config/boot.rb
139
+ - spec/rails_app/config/environment.rb
140
+ - spec/rails_app/config/environments
141
+ - spec/rails_app/config/environments/development.rb
142
+ - spec/rails_app/config/environments/production.rb
143
+ - spec/rails_app/config/environments/test.rb
144
+ - spec/rails_app/config/initializers
145
+ - spec/rails_app/config/initializers/inflections.rb
146
+ - spec/rails_app/config/initializers/mime_types.rb
147
+ - spec/rails_app/config/routes.rb
148
+ - spec/rails_app/log
149
+ - spec/rails_app/log/mongrel_debug
150
+ - spec/rails_app/public
151
+ - spec/rails_app/public/404.html
152
+ - spec/rails_app/public/422.html
153
+ - spec/rails_app/public/500.html
154
+ - spec/rails_app/public/dispatch.cgi
155
+ - spec/rails_app/public/dispatch.fcgi
156
+ - spec/rails_app/public/dispatch.rb
157
+ - spec/rails_app/public/favicon.ico
158
+ - spec/rails_app/public/images
159
+ - spec/rails_app/public/images/rails.png
160
+ - spec/rails_app/public/index.html
161
+ - spec/rails_app/public/javascripts
162
+ - spec/rails_app/public/javascripts/application.js
163
+ - spec/rails_app/public/javascripts/controls.js
164
+ - spec/rails_app/public/javascripts/dragdrop.js
165
+ - spec/rails_app/public/javascripts/effects.js
166
+ - spec/rails_app/public/javascripts/prototype.js
167
+ - spec/rails_app/public/robots.txt
168
+ - spec/rails_app/script
169
+ - spec/rails_app/script/about
170
+ - spec/rails_app/script/console
171
+ - spec/rails_app/script/destroy
172
+ - spec/rails_app/script/generate
173
+ - spec/rails_app/script/performance
174
+ - spec/rails_app/script/performance/benchmarker
175
+ - spec/rails_app/script/performance/profiler
176
+ - spec/rails_app/script/performance/request
177
+ - spec/rails_app/script/plugin
178
+ - spec/rails_app/script/process
179
+ - spec/rails_app/script/process/inspector
180
+ - spec/rails_app/script/process/reaper
181
+ - spec/rails_app/script/process/spawner
182
+ - spec/rails_app/script/runner
183
+ - spec/rails_app/script/server
184
+ - spec/rails_app/tmp
185
+ - spec/rails_app/tmp/pids
186
+ - spec/request
187
+ - spec/request/mongrel_spec.rb
188
+ - spec/request/parser_spec.rb
189
+ - spec/request/persistent_spec.rb
190
+ - spec/request/processing_spec.rb
191
+ - spec/response_spec.rb
192
+ - spec/runner_spec.rb
193
+ - spec/server
194
+ - spec/server/builder_spec.rb
195
+ - spec/server/pipelining_spec.rb
196
+ - spec/server/robustness_spec.rb
197
+ - spec/server/stopping_spec.rb
198
+ - spec/server/swiftiply.yml
199
+ - spec/server/swiftiply_spec.rb
200
+ - spec/server/tcp_spec.rb
201
+ - spec/server/threaded_spec.rb
202
+ - spec/server/unix_socket_spec.rb
203
+ - spec/server_spec.rb
204
+ - spec/spec_helper.rb
205
+ - tasks/announce.rake
206
+ - tasks/deploy.rake
207
+ - tasks/email.erb
208
+ - tasks/ext.rake
209
+ - tasks/gem.rake
210
+ - tasks/rdoc.rake
211
+ - tasks/site.rake
212
+ - tasks/spec.rake
213
+ - tasks/stats.rake
214
+ - ext/thin_parser/ext_help.h
215
+ - ext/thin_parser/parser.h
216
+ - ext/thin_parser/parser.c
217
+ - ext/thin_parser/thin.c
218
+ - ext/thin_parser/extconf.rb
219
+ - ext/thin_parser/common.rl
220
+ - ext/thin_parser/parser.rl
221
+ has_rdoc: true
222
+ homepage: http://code.macournoyer.com/thin/
223
+ post_install_message:
224
+ rdoc_options: []
225
+
226
+ require_paths:
227
+ - lib
228
+ required_ruby_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: 1.8.5
233
+ version:
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: "0"
239
+ version:
240
+ requirements: []
241
+
242
+ rubyforge_project: thin
243
+ rubygems_version: 1.2.0
244
+ signing_key:
245
+ specification_version: 2
246
+ summary: A thin and fast web server
247
+ test_files: []
248
+