
рд░реЗрд▓реЗрдВ? рдирд╣реАрдВ!
рдпрд╣ "рдПрдореНрдмреЗрдбреЗрдб" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдВрдЬрди рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдЪрдПрдорд╡реАрд╕реА рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рдХрдИ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕рдорд╛рдзрд╛рди: async- рд░реЗрд▓
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд░реЗрд▓ рдЗрдВрдЬрди рдФрд░
рдПрд╕рд┐рдВрдХреНрд╕-рд░реЗрд▓ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрдЬрди рд╣реИ рдЬреЛ #bar рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд FooController рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
module MyEngine class FooController < ::ApplicationController def bar render the: text => "Your text is
рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
gem 'thin'
рдФрд░ config.ru рдореЗрдВ рдпрд╣ рд▓рд╛рдЗрди:
... use Rack::FiberPool
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ config / application.rb рдореЗрдВ рд╣реИ:
... config.threadsafe!
рдЕрдм рд╣рдо FooController рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class HomeController < ApplicationController def index http = EM::HttpRequest.new("http://localhost:3000/foo/bar?text=
рдЕрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
this start
рдФрд░ рдЦреЛрд▓реЗрдВ
http: // localhost: 3000 / рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕? = рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ
рдПрдЪрдПрдорд╡реАрд╕реА :

рд░реЗрд▓ рд▓реЙрдЧ рдореЗрдВ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
Started GET "/home/index?a=HMVC" for 127.0.0.1 at 2012-02-03 15:27:02 +0400
Processing by HomeController#index as HTML
Parameters: {"a"=>"HMVC"}
Started GET "/foo/bar?text=HMVC" for 127.0.0.1 at 2012-02-03 15:27:02 +0400
Processing by FooController#index as HTML
Parameters: {"text"=>"HMVC"}
Rendered text template (0.0ms)
Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)
Rendered text template (0.0ms)
Completed 200 OK in 6ms (Views: 0.4ms | ActiveRecord: 0.0ms)
рд╣рдордиреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ!
рд╕рдорд╕реНрдпрд╛рдУрдВ
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:
- рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЗрдВрдЬрди рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рд╣рд░ рдХреЛрдИ FooController рдХреЛ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ);
- рд╕рднреА рд▓реЙрдЧ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ
рд╕рдВрджрд░реНрдн
- рд╕реИрдо рдбреА FreThe рджреНрд╡рд╛рд░рд╛ HMVC рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ
- https://github.com/igrigorik/async-rails