Padrino 0.12.3 ( と padrino-contrib 0.2.0 ) がリリースされました
変更内容としては、ルーターのリファクタリング・リローダーの改善、その他いくつかのバグ修正なのですが、ちょっと注意が必要そうな変更が多そうだったので重要そうな変更点をまとめておきます。
( ちょっと非互換の内容が多いから 0.13.0 にしちゃっても良かったんじゃないかな...
( あと Ruby 1.9.3 以上が必要なのってこれより前からだったっけ?
非推奨となったメソッドと非互換の変更
- Padrino::Application#load_paths
- Padrino.load_paths
Padrino::Application#prerequisites を使用するように警告が表示され、空配列が戻されるようになりました
開発時のリロード対象にしたいものは prerequisites にパスを入れていくことになります(Dir.glob で探索される)
- Padrino.set_load_paths
$LOAD_PATH を使用するように警告が表示され、空配列が戻されるようになりました
- パンくずリストを便利に使える breadcrumbs ヘルパーが padrino-contrib に移されました
0.12.3以降でこれまで同様に breadcrumbs ヘルパーを使いたい場合は require 'padrino-contrib/helpers/breadcrumbs' とする必要があります これに合わせて padrino-contrib のバージョンも 0.2.0 に上がっています
Padrino::Admin::AccessControl を明示的に use していない場合には PadrinoAdmin の I18n 用辞書ファイルを自動的に読み込まないようになりました
Padrino::Admin に含まれる I18n 用辞書ファイルから activemodel(activerecord).errors.messages がごっそりと削除されました
未使用だった Padrino::Admin::Utils::Crypt が削除されました
リローダーの改善
- リロード対象から外部のライブラリを除外する処理が修正されました
ルーターのリファクタリング
padrino-core/lib/padrino-core/application/routing.rb から以下の機能が別ファイルへと分離されました。
HttpRouterの拡張 : padrino-core/lib/padrino-core/ext/http_router.rb
Padrino::Filter : padrino-core/lib/padrino-core/filter.rb
その他、コードをキレイにするための変更がいくつかありました
ジェネレータの改善
- --tiny オプションでプロジェクトを作成する際に、生成される helper ファイルでモジュール名が出力されていない不具合が修正されました
- --tiny オプションでプロジェクトを作成する際に、テスト用コンポーネントが指定されている場合にはテスト用のファイルが生成されるようになりました
- app ジェネレータと model ジェネレータに --force オプションが追加されました。このオプションを付けない場合、既に対象のファイルが存在していた場合には操作が中断されますが、--force オプションを付けることで上書きするか確認されるようになります
- controller ジェネレータに --no-helper オプションが追加されました。このオプションを付けることで helper 用のファイル生成をスキップすることができます
- project ジェネレータで、log, tmp ディレクトリが作成されるようになりました(--gem オプションを付けた場合は除く)
- project ジェネレータで、bin ディレクトリが作成され、プロジェクト名と同名の起動スクリプトが生成されるようになりました
$ padrino g project sample_project $ cd sample_project $ bundle install $ ./bin/sample_project => Padrino/0.12.3 has taken the stage development at http://127.0.0.1:3000 [2014-08-14 18:54:50] INFO WEBrick 1.3.1 [2014-08-14 18:54:50] INFO ruby 2.1.2 (2014-05-08) [x86_64-darwin13.0] [2014-08-14 18:54:50] INFO WEBrick::HTTPServer#start: pid=75724 port=3000
ルーティングの with オプションに文字列が渡せるようになった
Drugs::App.controller :'v9/medicines' do # works as is: get :index do; end get :prescribed_by_medic, :with => [ :medic_id ] do; end # works as is but needs a test to lock this feature: get :show, '', :with => [ :id ] do; end # needs cosmetic patch to pass verb arguments to Router around Sinatra: post :bulk_create do; end post :create, '' do; end put :update, '', :with => [ :id ] do; end # needs small patch to :with syntax to allow constant strings: put :update_chronic_state, '', :with => [ :id, 'update_chronic_state' ] do; end delete :stop_treatment, '', :with => [ :id, 'stop_treatment' ] do; end delete :destroy, '', :with => [ :id ] do; end end
URL REQUEST PATH (:v9/medicines, :index) GET /v9/medicines (:v9/medicines, :prescribed_by_medic) GET /v9/medicines/prescribed_by_medic/:medic_id (:v9/medicines, :show) GET /v9/medicines/:id (:v9/medicines, :bulk_create) POST /v9/medicines/bulk_create (:v9/medicines, :create) POST /v9/medicines (:v9/medicines, :update) PUT /v9/medicines/:id (:v9/medicines, :update_chronic_state) PUT /v9/medicines/:id/update_chronic_state (:v9/medicines, :stop_treatment) DELETE /v9/medicines/:id/stop_treatment (:v9/medicines, :destroy) DELETE /v9/medicines/:id