Sinatra + Faye::WebSocketでlambda do |env|したくない
ごぶさた。
最近WebSocketに興味があってなんかやってみようと模索中。
websocket-railsとかしっかり出来てそうだったけど、もうちょいお手軽に出来ないものかと探したらfaye-websocket-rubyというものが。READMEの例は簡単そうで良い感じだぞぉ。
しかしサンプルを読むと
require 'faye/websocket' App = lambda do |env| (中略) end
(´・ω・`)ナニコレ。どうやらconfig.ruにて
run App
ってやって起動してる模様。Rackアプリに対応ってことですかね。
へーこんな書き方あるんだーと思いつつ、sinatra使って
get '/' do (中略) end
という風に書きたいなーと。書き慣れてる & 見慣れてる & ネストが1段浅くできる。て訳で書き換えようとしたが、わからんかったのはラムダに渡されてるenvといふもの。なんぞこれ。これと同じものをgetの内側で取得しないといけないんだけどどうすれば?
puts env.classしたらただのHashで、puts envしたら何やらリクエストのヘッダみたいなのがズラズラ。そこかしこに見えるrackという文字。getの内側でrequestっていうメソッド使えたよなーと思ってここを見たらありました。
request.env
で取れそうですね。そのまんまでしたね。Rackへの理解が足りませんでしたね。
というわけでソース置いときます。