LoginSignup
13
13

More than 5 years have passed since last update.

Upgraded to Padrino 0.11.0

Last updated at Posted at 2013-03-27

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

ここは普通に警告が出るのでそのまま対応すればいいが、以下のような変更をする必要がある。

Rakefile
-require File.expand_path('../config/boot.rb', __FILE__)
 require 'padrino-core/cli/rake'
+PadrinoTasks.use(:activerecord)
+PadrinoTasks.use(:database)
 PadrinoTasks.init

* * *

ぼくが引っかかったのはコレくらいです。何か引っかかったら、 便利なウェブサービス があるので検索したり質問してみたりしてください。

13
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13