michaelyta-thin 1.2.2

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 +257 -0
  2. data/COPYING +18 -0
  3. data/README +69 -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/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 +23 -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 +452 -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 +433 -0
  29. data/lib/rack/adapter/loader.rb +79 -0
  30. data/lib/rack/adapter/rails.rb +175 -0
  31. data/lib/thin.rb +49 -0
  32. data/lib/thin/backends/base.rb +141 -0
  33. data/lib/thin/backends/swiftiply_client.rb +56 -0
  34. data/lib/thin/backends/tcp_server.rb +68 -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 +214 -0
  38. data/lib/thin/controllers/cluster.rb +127 -0
  39. data/lib/thin/controllers/controller.rb +183 -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 +174 -0
  43. data/lib/thin/headers.rb +39 -0
  44. data/lib/thin/logging.rb +54 -0
  45. data/lib/thin/request.rb +158 -0
  46. data/lib/thin/response.rb +101 -0
  47. data/lib/thin/runner.rb +209 -0
  48. data/lib/thin/server.rb +247 -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/spec/backends/swiftiply_client_spec.rb +66 -0
  54. data/spec/backends/tcp_server_spec.rb +33 -0
  55. data/spec/backends/unix_server_spec.rb +37 -0
  56. data/spec/command_spec.rb +25 -0
  57. data/spec/configs/cluster.yml +9 -0
  58. data/spec/configs/single.yml +9 -0
  59. data/spec/connection_spec.rb +105 -0
  60. data/spec/controllers/cluster_spec.rb +235 -0
  61. data/spec/controllers/controller_spec.rb +129 -0
  62. data/spec/controllers/service_spec.rb +50 -0
  63. data/spec/daemonizing_spec.rb +192 -0
  64. data/spec/headers_spec.rb +40 -0
  65. data/spec/logging_spec.rb +46 -0
  66. data/spec/perf/request_perf_spec.rb +50 -0
  67. data/spec/perf/response_perf_spec.rb +19 -0
  68. data/spec/perf/server_perf_spec.rb +39 -0
  69. data/spec/rack/loader_spec.rb +29 -0
  70. data/spec/rack/rails_adapter_spec.rb +106 -0
  71. data/spec/rails_app/app/controllers/application.rb +10 -0
  72. data/spec/rails_app/app/controllers/simple_controller.rb +19 -0
  73. data/spec/rails_app/app/helpers/application_helper.rb +3 -0
  74. data/spec/rails_app/app/views/simple/index.html.erb +15 -0
  75. data/spec/rails_app/config/boot.rb +109 -0
  76. data/spec/rails_app/config/environment.rb +64 -0
  77. data/spec/rails_app/config/environments/development.rb +18 -0
  78. data/spec/rails_app/config/environments/production.rb +19 -0
  79. data/spec/rails_app/config/environments/test.rb +22 -0
  80. data/spec/rails_app/config/initializers/inflections.rb +10 -0
  81. data/spec/rails_app/config/initializers/mime_types.rb +5 -0
  82. data/spec/rails_app/config/routes.rb +35 -0
  83. data/spec/rails_app/public/404.html +30 -0
  84. data/spec/rails_app/public/422.html +30 -0
  85. data/spec/rails_app/public/500.html +30 -0
  86. data/spec/rails_app/public/dispatch.cgi +10 -0
  87. data/spec/rails_app/public/dispatch.fcgi +24 -0
  88. data/spec/rails_app/public/dispatch.rb +10 -0
  89. data/spec/rails_app/public/favicon.ico +0 -0
  90. data/spec/rails_app/public/images/rails.png +0 -0
  91. data/spec/rails_app/public/index.html +277 -0
  92. data/spec/rails_app/public/javascripts/application.js +2 -0
  93. data/spec/rails_app/public/javascripts/controls.js +963 -0
  94. data/spec/rails_app/public/javascripts/dragdrop.js +972 -0
  95. data/spec/rails_app/public/javascripts/effects.js +1120 -0
  96. data/spec/rails_app/public/javascripts/prototype.js +4225 -0
  97. data/spec/rails_app/public/robots.txt +5 -0
  98. data/spec/rails_app/script/about +3 -0
  99. data/spec/rails_app/script/console +3 -0
  100. data/spec/rails_app/script/destroy +3 -0
  101. data/spec/rails_app/script/generate +3 -0
  102. data/spec/rails_app/script/performance/benchmarker +3 -0
  103. data/spec/rails_app/script/performance/profiler +3 -0
  104. data/spec/rails_app/script/performance/request +3 -0
  105. data/spec/rails_app/script/plugin +3 -0
  106. data/spec/rails_app/script/process/inspector +3 -0
  107. data/spec/rails_app/script/process/reaper +3 -0
  108. data/spec/rails_app/script/process/spawner +3 -0
  109. data/spec/rails_app/script/runner +3 -0
  110. data/spec/rails_app/script/server +3 -0
  111. data/spec/request/mongrel_spec.rb +39 -0
  112. data/spec/request/parser_spec.rb +215 -0
  113. data/spec/request/persistent_spec.rb +35 -0
  114. data/spec/request/processing_spec.rb +45 -0
  115. data/spec/response_spec.rb +91 -0
  116. data/spec/runner_spec.rb +168 -0
  117. data/spec/server/builder_spec.rb +44 -0
  118. data/spec/server/pipelining_spec.rb +110 -0
  119. data/spec/server/robustness_spec.rb +34 -0
  120. data/spec/server/stopping_spec.rb +55 -0
  121. data/spec/server/swiftiply.yml +6 -0
  122. data/spec/server/swiftiply_spec.rb +32 -0
  123. data/spec/server/tcp_spec.rb +57 -0
  124. data/spec/server/threaded_spec.rb +27 -0
  125. data/spec/server/unix_socket_spec.rb +26 -0
  126. data/spec/server_spec.rb +96 -0
  127. data/spec/spec_helper.rb +219 -0
  128. data/tasks/announce.rake +22 -0
  129. data/tasks/deploy.rake +16 -0
  130. data/tasks/email.erb +30 -0
  131. data/tasks/ext.rake +42 -0
  132. data/tasks/gem.rake +108 -0
  133. data/tasks/rdoc.rake +25 -0
  134. data/tasks/site.rake +15 -0
  135. data/tasks/spec.rake +48 -0
  136. data/tasks/stats.rake +28 -0
  137. metadata +254 -0
data/tasks/deploy.rake ADDED
@@ -0,0 +1,16 @@
1
+ namespace :deploy do
2
+ task :site => %w(site:upload rdoc:upload)
3
+
4
+ desc 'Deploy on code.macournoyer.com'
5
+ task :alpha => %w(gem:upload deploy:site)
6
+
7
+ desc 'Deploy on rubyforge'
8
+ task :public => %w(gem:upload_rubyforge deploy:site)
9
+ end
10
+ desc 'Deploy on all servers'
11
+ task :deploy => %w(deploy:alpha deploy:public)
12
+
13
+ def upload(file, to, options={})
14
+ sh %{ssh macournoyer@code.macournoyer.com "rm -rf code.macournoyer.com/#{to}"} if options[:replace]
15
+ sh %{scp -rq #{file} macournoyer@code.macournoyer.com:code.macournoyer.com/#{to}}
16
+ 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/ext.rake ADDED
@@ -0,0 +1,42 @@
1
+ CLEAN.include %w(**/*.{o,bundle,jar,so,obj,pdb,lib,def,exp,log} ext/*/Makefile ext/*/conftest.dSYM)
2
+
3
+ def ext_task(name)
4
+ ext_dir = "ext/#{name}"
5
+ ext_bundle = "#{ext_dir}/#{name}.#{Config::CONFIG['DLEXT']}"
6
+ ext_files = FileList[
7
+ "#{ext_dir}/*.c",
8
+ "#{ext_dir}/*.h",
9
+ "#{ext_dir}/*.rl",
10
+ "#{ext_dir}/extconf.rb",
11
+ "#{ext_dir}/Makefile",
12
+ "lib"
13
+ ]
14
+
15
+ task "compile:#{name}" => ["#{ext_dir}/Makefile", ext_bundle]
16
+ task :compile => "compile:#{name}"
17
+
18
+ file "#{ext_dir}/Makefile" => ["#{ext_dir}/extconf.rb"] do
19
+ cd(ext_dir) { ruby "extconf.rb" }
20
+ end
21
+
22
+ file ext_bundle => ext_files do
23
+ cd ext_dir do
24
+ sh(WIN ? 'nmake' : 'make')
25
+ end
26
+ cp ext_bundle, 'lib/'
27
+ end
28
+ end
29
+
30
+ desc "Compile the Ragel state machines"
31
+ task :ragel do
32
+ Dir.chdir 'ext/thin_parser' do
33
+ target = "parser.c"
34
+ File.unlink target if File.exist? target
35
+ sh "ragel parser.rl | rlgen-cd -G2 -o #{target}"
36
+ raise "Failed to compile Ragel state machine" unless File.exist? target
37
+ end
38
+ end
39
+
40
+ desc "Compile the extensions"
41
+ task :compile
42
+ task :package => :compile
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', '>= 1.0.0'
24
+ s.add_dependency 'eventmachine', '>= 0.12.6'
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,254 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: michaelyta-thin
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Marc-Andre Cournoyer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-15 21:00:00 -07: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: 1.0.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.6
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: reactor
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: daemons
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.9
54
+ version:
55
+ description: A thin and fast web server, with added neverblock support!
56
+ email: macournoyer@gmail.com
57
+ executables:
58
+ - thin
59
+ extensions:
60
+ - ext/thin_parser/extconf.rb
61
+ extra_rdoc_files: []
62
+
63
+ files:
64
+ - COPYING
65
+ - CHANGELOG
66
+ - README
67
+ - Rakefile
68
+ - benchmark/abc
69
+ - benchmark/benchmarker.rb
70
+ - benchmark/runner
71
+ - bin/thin
72
+ - example/adapter.rb
73
+ - example/async_app.ru
74
+ - example/async_chat.ru
75
+ - example/async_tailer.ru
76
+ - example/config.ru
77
+ - example/monit_sockets
78
+ - example/monit_unixsock
79
+ - example/myapp.rb
80
+ - example/ramaze.ru
81
+ - example/thin.god
82
+ - example/thin_solaris_smf.erb
83
+ - example/thin_solaris_smf.readme.txt
84
+ - example/vlad.rake
85
+ - lib/rack
86
+ - lib/rack/adapter
87
+ - lib/rack/adapter/loader.rb
88
+ - lib/rack/adapter/rails.rb
89
+ - lib/thin
90
+ - lib/thin/backends
91
+ - lib/thin/backends/base.rb
92
+ - lib/thin/backends/swiftiply_client.rb
93
+ - lib/thin/backends/tcp_server.rb
94
+ - lib/thin/backends/unix_server.rb
95
+ - lib/thin/command.rb
96
+ - lib/thin/connection.rb
97
+ - lib/thin/controllers
98
+ - lib/thin/controllers/cluster.rb
99
+ - lib/thin/controllers/controller.rb
100
+ - lib/thin/controllers/service.rb
101
+ - lib/thin/controllers/service.sh.erb
102
+ - lib/thin/daemonizing.rb
103
+ - lib/thin/headers.rb
104
+ - lib/thin/logging.rb
105
+ - lib/thin/request.rb
106
+ - lib/thin/response.rb
107
+ - lib/thin/runner.rb
108
+ - lib/thin/server.rb
109
+ - lib/thin/stats.html.erb
110
+ - lib/thin/stats.rb
111
+ - lib/thin/statuses.rb
112
+ - lib/thin/version.rb
113
+ - lib/thin.rb
114
+ - spec/backends
115
+ - spec/backends/swiftiply_client_spec.rb
116
+ - spec/backends/tcp_server_spec.rb
117
+ - spec/backends/unix_server_spec.rb
118
+ - spec/command_spec.rb
119
+ - spec/configs
120
+ - spec/configs/cluster.yml
121
+ - spec/configs/single.yml
122
+ - spec/connection_spec.rb
123
+ - spec/controllers
124
+ - spec/controllers/cluster_spec.rb
125
+ - spec/controllers/controller_spec.rb
126
+ - spec/controllers/service_spec.rb
127
+ - spec/daemonizing_spec.rb
128
+ - spec/headers_spec.rb
129
+ - spec/logging_spec.rb
130
+ - spec/perf
131
+ - spec/perf/request_perf_spec.rb
132
+ - spec/perf/response_perf_spec.rb
133
+ - spec/perf/server_perf_spec.rb
134
+ - spec/rack
135
+ - spec/rack/loader_spec.rb
136
+ - spec/rack/rails_adapter_spec.rb
137
+ - spec/rails_app
138
+ - spec/rails_app/app
139
+ - spec/rails_app/app/controllers
140
+ - spec/rails_app/app/controllers/application.rb
141
+ - spec/rails_app/app/controllers/simple_controller.rb
142
+ - spec/rails_app/app/helpers
143
+ - spec/rails_app/app/helpers/application_helper.rb
144
+ - spec/rails_app/app/views
145
+ - spec/rails_app/app/views/simple
146
+ - spec/rails_app/app/views/simple/index.html.erb
147
+ - spec/rails_app/config
148
+ - spec/rails_app/config/boot.rb
149
+ - spec/rails_app/config/environment.rb
150
+ - spec/rails_app/config/environments
151
+ - spec/rails_app/config/environments/development.rb
152
+ - spec/rails_app/config/environments/production.rb
153
+ - spec/rails_app/config/environments/test.rb
154
+ - spec/rails_app/config/initializers
155
+ - spec/rails_app/config/initializers/inflections.rb
156
+ - spec/rails_app/config/initializers/mime_types.rb
157
+ - spec/rails_app/config/routes.rb
158
+ - spec/rails_app/public
159
+ - spec/rails_app/public/404.html
160
+ - spec/rails_app/public/422.html
161
+ - spec/rails_app/public/500.html
162
+ - spec/rails_app/public/dispatch.cgi
163
+ - spec/rails_app/public/dispatch.fcgi
164
+ - spec/rails_app/public/dispatch.rb
165
+ - spec/rails_app/public/favicon.ico
166
+ - spec/rails_app/public/images
167
+ - spec/rails_app/public/images/rails.png
168
+ - spec/rails_app/public/index.html
169
+ - spec/rails_app/public/javascripts
170
+ - spec/rails_app/public/javascripts/application.js
171
+ - spec/rails_app/public/javascripts/controls.js
172
+ - spec/rails_app/public/javascripts/dragdrop.js
173
+ - spec/rails_app/public/javascripts/effects.js
174
+ - spec/rails_app/public/javascripts/prototype.js
175
+ - spec/rails_app/public/robots.txt
176
+ - spec/rails_app/script
177
+ - spec/rails_app/script/about
178
+ - spec/rails_app/script/console
179
+ - spec/rails_app/script/destroy
180
+ - spec/rails_app/script/generate
181
+ - spec/rails_app/script/performance
182
+ - spec/rails_app/script/performance/benchmarker
183
+ - spec/rails_app/script/performance/profiler
184
+ - spec/rails_app/script/performance/request
185
+ - spec/rails_app/script/plugin
186
+ - spec/rails_app/script/process
187
+ - spec/rails_app/script/process/inspector
188
+ - spec/rails_app/script/process/reaper
189
+ - spec/rails_app/script/process/spawner
190
+ - spec/rails_app/script/runner
191
+ - spec/rails_app/script/server
192
+ - spec/request
193
+ - spec/request/mongrel_spec.rb
194
+ - spec/request/parser_spec.rb
195
+ - spec/request/persistent_spec.rb
196
+ - spec/request/processing_spec.rb
197
+ - spec/response_spec.rb
198
+ - spec/runner_spec.rb
199
+ - spec/server
200
+ - spec/server/builder_spec.rb
201
+ - spec/server/pipelining_spec.rb
202
+ - spec/server/robustness_spec.rb
203
+ - spec/server/stopping_spec.rb
204
+ - spec/server/swiftiply.yml
205
+ - spec/server/swiftiply_spec.rb
206
+ - spec/server/tcp_spec.rb
207
+ - spec/server/threaded_spec.rb
208
+ - spec/server/unix_socket_spec.rb
209
+ - spec/server_spec.rb
210
+ - spec/spec_helper.rb
211
+ - tasks/announce.rake
212
+ - tasks/deploy.rake
213
+ - tasks/email.erb
214
+ - tasks/ext.rake
215
+ - tasks/gem.rake
216
+ - tasks/rdoc.rake
217
+ - tasks/site.rake
218
+ - tasks/spec.rake
219
+ - tasks/stats.rake
220
+ - ext/thin_parser/ext_help.h
221
+ - ext/thin_parser/parser.h
222
+ - ext/thin_parser/parser.c
223
+ - ext/thin_parser/thin.c
224
+ - ext/thin_parser/extconf.rb
225
+ - ext/thin_parser/common.rl
226
+ - ext/thin_parser/parser.rl
227
+ has_rdoc: true
228
+ homepage: http://code.macournoyer.com/thin/
229
+ post_install_message:
230
+ rdoc_options: []
231
+
232
+ require_paths:
233
+ - lib
234
+ required_ruby_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: 1.8.5
239
+ version:
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: "0"
245
+ version:
246
+ requirements: []
247
+
248
+ rubyforge_project: thin
249
+ rubygems_version: 1.2.0
250
+ signing_key:
251
+ specification_version: 2
252
+ summary: A thin and fast web server
253
+ test_files: []
254
+