Rails本身基於多個獨立的進程,這些進程之間是無狀態請求。我需要爲我的Rails應用程序添加一個有狀態的集中服務(一個遊戲自動匹配器)。如何創建Rails使用的機架應用程序?
從我所知道的很少,我應該使有狀態的服務機架應用程序。有沒有關於如何製作機架應用程序的教程,以及如何從Rails與其進行通信也很重要。用Rails部署它的習慣用法以及將它放入我的git Rails代碼庫的習慣用法是什麼?
Rails本身基於多個獨立的進程,這些進程之間是無狀態請求。我需要爲我的Rails應用程序添加一個有狀態的集中服務(一個遊戲自動匹配器)。如何創建Rails使用的機架應用程序?
從我所知道的很少,我應該使有狀態的服務機架應用程序。有沒有關於如何製作機架應用程序的教程,以及如何從Rails與其進行通信也很重要。用Rails部署它的習慣用法以及將它放入我的git Rails代碼庫的習慣用法是什麼?
我得到了我的問題的另一個問題回答:
How to read POST data in rack request
require 'json'
class Greeter
def call(env)
req = Rack::Request.new(env)
if req.post?
puts req.POST()
end
[200, {"Content-Type" => "application/json"}, [{x:"Hello World!"}.to_json]]
end
end
run Greeter.new
,並使用JSON.parse(req.body.read)
解析POST數據。
機架以外的其他選項是daemonize您的應用。
據我所知,中間件Rails是Rails請求處理的一部分。但它不是一個獨立的進程,在Rails之外運行,這正是我想要的。 – user782220 2013-03-13 10:09:16
哎呀,抱歉,誤解了您的問題 – 2013-03-13 10:10:28
守護它仍然是一個有效的選擇,但。你將有一個單獨的進程在socket或localhost上提供數據,就像memcached一樣 – 2013-03-13 10:13:29
我認爲如果你能澄清你正在努力完成的事情會有所幫助。 Rack嚴格來說只是一個界面,它定義了一個Ruby應用程序處理HTTP請求的合約。 如果您可以提供關於您的「遊戲自動匹配器」應該做什麼的更多詳細信息,我可以提供更有用的答案。 – 2013-03-16 22:51:24