Padrino 0.11.0 、基本的には楽ちんに上げられたんですが、変なことをしていた場合等はややハマる箇所があったのでShare~します。
haml => 4.0 にしとく(追記)
忘れていたけど、 3.x 系だと動いてくれないので bundle update haml
する。padrinoはhamlに対して依存関係を持たないので、一緒に上がってはくれないので注意。
actionpack ~> 3.0.0 の依存がある場合
やばい(小並感)。
具体的には以下のような現象が起こって爆死する。
Bundler could not find compatible versions for gem "rack":
In Gemfile:
padrino (>= 0) ruby depends on
rack (>= 1.5.2, ~> 1.5) ruby
actionpack (= 3.2.12) ruby depends on
rack (1.4.5)
正確には Sinatra => 1.4 が Rack 1.5.2 以上を要求するということ。
actionpack 自体は将来にわたって純粋にRailsのものなので、コレに依存している処理は Rack や tilt に含まれる何かで代替すべきであろう。
難しいのがRailsでもPadrinoでも使えるようにしたかったライブラリ達で、例えばkaminari は現状 actionpack >= 3.0.0 への依存があるので Padrino 0.11.0 と一緒に使うのが難しい。
Rails 4 対応を待つ(actionpack 4.0.0では rack ~> 1.5.2 への依存となる)か、暫定的にforkするか、あるいは actionpack 自体はヘルパーでしか使っておらず、モデルのページネーション自体には関係がないので、actionpackへの依存を任意とするようにロビー活動をするか……ということになるのかなあ……。
request.route_obj.named
これは http_router のバージョンアップによる影響っぽいんだけれど、今まで「コントローラ+アクション」の情報が入っていた named というAPIが無くなったっぽい。その代わり、むしろactionとcontrollerがちゃんと独立して取れるようになっているので進化しているとも言える。なので、使っていたら適切にrenameすべき。
具体的には rspce-padrino というgemで問題になっているので、作者のudzuraさんがきっと超高速で直してくれることでしょう。わー期待
request.preferred_type
が変わった
これは Sinatra 側の変更。ただの文字列だったが、 Sinatra::Request::AcceptEntry
と言うものを返すようになった。 to_s
を呼べば文字に戻せる。
詳しくは rkhのブロッグ記事 の「Mime-Type Parameters」の項目を読めば、もっと色々できるようになったんやね〜と言うのが分かる。
enable :protection
がデフォルトになった
you need to set up a session middleware *before* Rack::Protection::SessionHijacking
と言われることがある。たいてい enable :sessions
を忘れている。
ウェッブ API だし… みたいな場合は disable :protection
とした上で、必要と思われる rack-protection のミドルウェアを個別利用するのが良さそう。
Rakefile
ここは普通に警告が出るのでそのまま対応すればいいが、以下のような変更をする必要がある。
-require File.expand_path('../config/boot.rb', __FILE__)
require 'padrino-core/cli/rake'
+PadrinoTasks.use(:activerecord)
+PadrinoTasks.use(:database)
PadrinoTasks.init
* * *
ぼくが引っかかったのはコレくらいです。何か引っかかったら、 便利なウェブサービス があるので検索したり質問してみたりしてください。