@kyanny's blog

My thoughts, my life. Views/opinions are my own.

rackup なしで Rack アプリケーションを起動するには Rack::Server.start を使う

https://github.com/kyanny/playground/blob/gh-pages/rack-server-start/app.rb

require 'rack'
Rack::Server.start(
  app: ->(env) { [200, {}, ["OK\n"]] },
  Port: 9292,
  environment: 'development'
)

rackup の中身も単に Rack::Server.start を呼び出してるだけだった。 ARGV のパースやもろもろのデフォルト値の設定・解釈などは奥のほうでなされている。

Rack::Proxy で forward proxy

https://github.com/kyanny/playground/tree/gh-pages/rack-proxy

rack-proxy はサブクラスで rewrite_envrewrite_response をオーバーライドするのが作法(そこでなにかおもしろいことをする) rewrite_env は outgoing request を加工するフックで rewrite_response は incoming response を加工するフック。

require 'rack-proxy'
require 'pp'

class MyProxy < Rack::Proxy
  def rewrite_env env
    pp env
    env
  end

  def rewrite_response triplet
    pp triplet
    triplet
  end
end

run MyProxy.new
$ rackup
$ curl --proxy http://localhost:9292 http://example.com

RIP

友人が亡くなった。

訃報はいつだって急なものだけど、その人はいかにも健康そうで病と無縁に思えたので、意外すぎてとても驚いた。病気で入院するとの知らせをうけてからわずか一月余りの出来事だった。いまだに信じられない。

おれは薄情な人間だから、見知らぬ人の身に不幸があってもお悔やみなんて言わないし、いい人だと思っていない人のことを「いい人だ」とうそぶいたりもしない。けれどもその人は掛け値なしにいい人だったし、その人がこの世を去ってしまったことが本当に悲しい。

友よ、どうか、安らかに眠れ。