Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

日程調整アプリを作ろう-7-

今回分実装済みのサンプル:adjuster.zip*注意!!日程調整アプリを拡張しよう-1-も実装済です。

実装 -5-

作成手順

今回は1.2系から2.0系へのアップグレードを行います。また副産物として?in_place_editorをさらに便利にします。

今回実装する内容、手順を、以下に示します。

  1. SQLのミスを修正
  2. gemのアップデート
  3. rails1.2.6のインストール
  4. ログを確認(deprecation warning)
  5. rails2.0.2のインストール
  6. config/environment.rbの修正
  7. rake rails:update
  8. config/environment.rbに追加
  9. paginating_findプラグインのインストール
  10. super_inplace_controllsプラグインのインストール
  11. BASIC認証の変更

SQLの抜け(ミス)を修正

日程調整の画面でまだSQLに問題がありましたので、まずそこを修正します。

何が問題だったのかというと、並び順を指定していなかった、です。

前回マトリックスの日付(Schedule)は並び順を指定しました。

しかし、各自の予定(user_schedules)は並び順が指定されていません。ですので、予定月日を作成するときに、古い日付を先に入れたりすると、日付と予定が合わなくなってしまいます。

07-001s.gif

並び順を追加してやればいいわけですが、この場合必要な項目はScheduleの日付です。 しかし、今のSQLはschedulesをJOINしていません。

07-002s.gif

再度schedulesをJOINした上で、schedulesの日付を並び順として付与してやります。

・・・と、ここまで考えてはたと気づきました。日程調整アプリを作ろう-4-でこのSQLを作成した時にCascaded Eager Loadingを使うのを忘れてました!!

app/controllers/user_schedule_controller.rbを以下のように修正します。

07-003s.gif

Cascaded Eager Loadingを使えば、ちゃんと絞込されるので、そもそもINを使う必要はなかったですね・・・。

gemのアップデート

気を取り直して先に進みましょう。2.0系に移行するに当たって、まずgemをアップデートします。

InstantRailsのメニューから”Rails Applications→Open Ruby Console Window”と選択、クリックします。

ir105.gif

”gem update --system”と入力して実行します。

07-002.gif

rails1.2.6のインストール

InstantRails1.7に入っているrailsのバージョンは1.2.3です。

07-001.gif

1.2.6にバージョンを上げると、2.0系で、非推奨のものは警告がログに表示されるようになります。そのため、まずはrails1.2.6をインストールします。

"gem install rails -v 1.2.6"と入力して実行します。

07-003.gif

adjusterを1.2.6に切り替えましょう。config/environment.rbの1.2.3となっている箇所を1.2.6に変更します。

07-004.gif

ログを確認(deprecation warning)

サーバーを立ち上げて一通り操作します。 log/development.logを開いて、確認してみましょう。

07-005.gif

ページネートが本体から切り離されて、プラグインになったようです。プラグインの入手先も表示されていますね。

それからログでは確認出来なかったですが、in_place_edit_forとin_place_edit_fieldもプラグイン化されています。こちらはリファレンスで確認出来ます。

07-006.gif 07-007.gif

rails2.0.2のインストール

移行時に修正が必要な部分がわかりましたので、Rails2.0.2をインストールして、いよいよ実際の移行作業に移りましょう。

"gem install rails"と入力し、実行します。

07-008.gif

config/environment.rbの修正

adjusterを2.0.2に切り替えましょう。config/environment.rbの1.2.6となっている箇所を2.0.2に変更します。

07-009.gif

rake rails:update

config/boot.rbが2.0系になってから変わっている為、これを変更しなければなりません。

rakeにこれをアップデートするタスク、rake rails:update:configsがあるのでこれを実行すれば良いのですが、ついでにjavascripts等もアップデートすることにします。

"rake rails:update"と入力し、実行します。

07-010.gif

config/environment.rbに追加

一旦ここでサーバを立ち上げてみましょう。

07-011.gif

エラーになってしまいました。log/development.logを開き、確認してみましょう。

07-012.gif

丁寧にメッセージが表示されていますので、その表示に従って、config/environment.rbに以下のように追加します。

画像では、そのまま追加していますが、:secretは適宜修正して追加してください。

07-013.gif

paginating_findプラグイン

インストール

これで、無事Menuは表示出来たかと思います。しかし、UserとEventのlistに遷移しようとすると当然・・・

07-014.gif

エラーが表示されます。ページネートが本体から無くなっている為ですね。

さっそくページネートプラグインをインストールしましょう。

ログに表示されていたclasic_paginationプラグインをインストールすると、実はこれも非推奨だよと出てきます。

代替えとして示されているのは2つ、will_paginateとpagination_findがあります。

どちらでも構わないかと思いますが、今回はpagination_findを使ってみることにします。

Adjusterプロジェクトのディレクトリに移動し、"ruby script/plugin install http://svn.cardboardrocket.com/paginating_find"と入力し、実行します。

07-015.gif

controllerの修正

app/controllers/event_controller.rbを以下のように修正します。なお、詳細はpaginating_findのREADME、リファレンスを参照下さい。

07-016.gif

同様に、user_controller.rbを以下のように修正します。

07-018.gif

views/listの修正

app/views/event/list.rhtmlを以下のように修正します。メソッドの詳細はREADME、リファレンスを参照下さい。

07-017.gif

同様にapp/views/user/list.rhtmlを以下のように修正します。

07-019.gif

確認してみましょう。プラグインをインストールしているので、サーバの再起動を忘れずに。

07-020.gif

OKですね。

super_inplace_controllsプラグインのインストール

日程調整画面を開こうとすると、in_place_editorが本体から分離されているので・・・

07-021.gif

当然、エラーになります。

in_place_editorのプラグインをインストールします。いくつかあるのですが、super_inplace_controllsというプラグインを使ってみましょう。

"ruby script/plugin install http://super-inplace-controls.googlecode.com/svn/trunk/super_inplace_controls/ "と入力し、実行します。

07-022.gif

in_place_edit_forは同じメソッドがありますので、user_schedule_controller.rbの修正は必要ありません。

app/views/user_schedule/list.rhtmlを以下のように修正します。

07-022-1.gif

これで、表示されるようになったかと思います。しかし、データを更新しようとすると・・。

07-023.gif 07-024.gif

RJSのエラーとなってしまいます。super_inplace_controllsは、idかclassがerror_messagesのタグにエラーメッセージを表示するようになっており、正常更新時にはこのエレメントをhideしようとします。

タグを用意しなかったのでエラーになったんですね。

list.rhtmlに以下のようにタグを追加します。

07-025.gif

これで正常に動作するようになりました。さて、super_inplace_controllsは、in_place_editorを多機能にしたプラグインになっています。

せっかくなので、○、△、×、?等の選択肢から選択出来るようにしましょう。

以下の用に修正します。

07-026.gif

確認してみます。OKですね。

07-027.gif

BASIC認証の変更

2.0系への移行は一応完了ですが、htpasswdプラグインで実現したBASIC認証の機能は、Rails2.0系では標準で用意されています。

前回入れたばかりですが、標準のものに切り替えます。

app/controllers/application.rbを以下のように編集します。

07-028.gif

htpasswdを削除します。"ruby script/plugin remove htpasswd"と入力し、実行します。

07-029.gif

次は?

次回はメール配信、テスト、日本語化のいずれかを行います。

目次前ページへ次ページへ