アクトインディ技術部隊報告書を Elephant から Rucksack に移行

区分
CommonLisp
報告者

こんにちは、tahara です。

前々回のRails3 への移行に続いて移行ネタです。

本ブログ「アクトインディ技術部隊報告書」は Common Lisp (SBCL) + Hunchentoot + Elephant で動いていました。 しかし、1年2ヶ月ぶりのエントリを書こうとした時、新規エントリの登録ができなくなっていました。 Elephant をアップグレードしたのが原因だったのですが、 新しいバージョンにマイグレーションするのがめんどうだったので、 Rucksack に移行してしまいました。

Rucksack は同時に一トランザクションしか時行できなかったのですが、 そのへんは適当に改造して同時に複数トランザクション実行できるようにしました。 そのソースはこちら https://github.com/quek/rucksack です。

Hunchentoot と Rucksack の連携は次のように行います。 Hunchentoot のリダイレクによる throw と Rucksack のトランザクション制御を 両立するためにすこしめんどうなことになってまいます。

(defmethod hunchentoot::acceptor-dispatch-request ((self my-acceptor) request)
  (let (response
        (handler-done t))
    (rucksack:with-transaction ()
      ;; hunchentoot のリダイレクトのハンドリング
      (catch 'hunchentoot::handler-done
        (setf response (call-next-method))
        (setf handler-done nil)))
    (if handler-done
        (throw 'hunchentoot::handler-done nil)
        response)))

というわけで「アクトインディ技術部隊報告書」復活しましたので、 今後ともよろしくお願いいたします。

トップページに戻る

技師部隊からの
お知らせ

【求人】エンジニア募集しています。

本頁の来客数
八十七万千百七十六名以上(計測停止中)

メンバー一覧

アクトインディ技師部隊員名簿

アクトインディ技師部元隊員

アクトインディへ

カテゴリー

アクトインディ

aaaa