技術ネタを書けるような人間になりたいという心情を詠んだ句

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への理解が足りませんでしたね。

というわけでソース置いときます。