aboutsummaryrefslogtreecommitdiffstats
path: root/guides
diff options
context:
space:
mode:
authorRafael Magana <raf.magana@gmail.com>2012-05-22 22:02:20 -0500
committerRafael Magana <raf.magana@gmail.com>2012-05-22 22:02:20 -0500
commit56ad6ca3ffe739e9ef445f39bf7c6ff3111ca42b (patch)
tree64c2d019ad826c002cdba767608a8fc434ebcfac /guides
parent83f62a069e6723c994365855bd9509d5b1a218bc (diff)
downloadrails-56ad6ca3ffe739e9ef445f39bf7c6ff3111ca42b.tar.gz
rails-56ad6ca3ffe739e9ef445f39bf7c6ff3111ca42b.tar.bz2
rails-56ad6ca3ffe739e9ef445f39bf7c6ff3111ca42b.zip
update loaded middlewares and use of Rack::Server instead of Rack::Builder
Diffstat (limited to 'guides')
-rw-r--r--guides/source/rails_on_rack.textile46
1 files changed, 33 insertions, 13 deletions
diff --git a/guides/source/rails_on_rack.textile b/guides/source/rails_on_rack.textile
index 0080982b67..b85b09241e 100644
--- a/guides/source/rails_on_rack.textile
+++ b/guides/source/rails_on_rack.textile
@@ -27,25 +27,45 @@ h4. Rails Application's Rack Object
h4. +rails server+
-<tt>rails server</tt> does the basic job of creating a +Rack::Builder+ object and starting the webserver. This is Rails' equivalent of Rack's +rackup+ script.
+<tt>rails server</tt> does the basic job of creating a +Rack::Server+ object and starting the webserver.
-Here's how +rails server+ creates an instance of +Rack::Builder+
+Here's how +rails server+ creates an instance of +Rack::Server+
<ruby>
-app = Rack::Builder.new {
- use Rails::Rack::LogTailer unless options[:detach]
- use Rails::Rack::Debugger if options[:debugger]
- use ActionDispatch::Static
- run ApplicationName::Application
-}.to_app
+Rails::Server.new.tap { |server|
+ require APP_PATH
+ Dir.chdir(Rails.application.root)
+ server.start
+}
</ruby>
-Middlewares used in the code above are primarily useful only in the development environment. The following table explains their usage:
+The +Rails::Server+ inherits from +Rack::Server+ and calls the +Rack::Server#start+ method this way:
+
+<ruby>
+class Server < ::Rack::Server
+ def start
+ ...
+ super
+ end
+end
+</ruby>
+
+Here's how it loads the middlewares:
+
+<ruby>
+def middleware
+ middlewares = []
+ middlewares << [Rails::Rack::Debugger] if options[:debugger]
+ middlewares << [::Rack::ContentLength]
+ Hash.new(middlewares)
+end
+</ruby>
+
++Rails::Rack::Debugger+ is primarily useful only in the development environment. The following table explains the usage of the loaded middlewares:
|_.Middleware|_.Purpose|
-|+Rails::Rack::LogTailer+|Appends log file output to console|
-|+ActionDispatch::Static+|Serves static files inside +Rails.root/public+ directory|
|+Rails::Rack::Debugger+|Starts Debugger|
+|+Rack::ContentLength+|Counts the number of bytes in the response and set the HTTP Content-Length header|
h4. +rackup+
@@ -55,8 +75,8 @@ To use +rackup+ instead of Rails' +rails server+, you can put the following insi
# Rails.root/config.ru
require "config/environment"
-use Rails::Rack::LogTailer
-use ActionDispatch::Static
+use Rack::Debugger
+use Rack::ContentLength
run ApplicationName::Application
</ruby>