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

  • Sinatra の拡張 : padrino-core/lib/padrino-core/ext/sinatra.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