diff options
Diffstat (limited to 'guides/source/rails_on_rack.textile')
| -rw-r--r-- | guides/source/rails_on_rack.textile | 46 | 
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>  | 
