近&況

Recent Posts
Edit

sinatra2の微妙な非互換

2016-10-17

このブログにKaminariを入れてページネーションをやろうと思ったのだが、gemのバージョンの関係で簡単には入らないことが分かった。

  1. Kaminariはactionpackとactivesupportの3以上を必要とする。
  2. nlog2(このブログのことです)ではactiverecord 5.0.0.1を使っている。したがって、actionpackとactivesupportも5.0.0.1になる。
  3. actionpack 5はrack 2を必要とする。
  4. しかしsinatra 1.4.7がrack 2に対応していないので、sinatra 2.0.0.beta2に上げる必要がある。
  5. sinatra-contribも2.0.0.beta2に上げる必要がある。
  6. さらにsinatra-activerecordは最新版でもsinatra 1系固定になっているので、なんとかしてsinatra 2と共存させる必要がある。
    • これはとりあえずgemspecだけいじったものを用意したので、 gem 'sinatra-activerecord', git: 'https://github.com/yhara/sinatra-activerecord', branch: 'sinatra2' でなんとか動かせそう。

とまあここまでやってテストを走らせたところいくつかFailureが出た。ルーティング定義で正規表現を使っている箇所があったのだけど、先頭にスラッシュを付けたら直った。部分一致じゃなく全体一致になったのかも。

-  get %r{(\d\d\d\d)/(\d\d)/(\d\d)/(.+)} do
+  get %r{/(\d\d\d\d)/(\d\d)/(\d\d)/(.+)} do

まあそのほうがいいよね(気づいてなかったけど、この修正をするまでは /asdf/2016/08/11/making-blog-1 みたいなURLでもアクセスできてしまっていたようだ)。