Modelを作ろう! (6/7)
作成:2012-02-06 08:24
更新:2012-02-06 08:24
更新:2012-02-06 08:24
■デプロイからマイグレーションまで
これでひと通りの作業ができました。ここで一度、デプロイしておきます。といっても、初めてデプロイしたときは簡単でしたが、既にあるアプリを更新する場合には、決まった手順を踏まなければいけません。ここで手順を覚えておいてください。
・デプロイの手順
1. commandsアイコンメニューから、<Stage>を選びます。もしメニューが選択できないようならこれは飛ばしてかまいません。
2. 続いて、commandsアイコンメニューから、<Commit...>を選び、ダイアログを呼び出します。そして、unstaged changesの「>>」ボタンを押し、全部staged changesに移動します。最後に、Commit messageにメッセージを適当に書いて「Commit」ボタンを押してください。これでコミットされます。
3. Deployのアイコンメニューから<Deploy App>を選びます。これでデプロイされます。
――なぜ、一度デプロイしておくのか。それは次の「マイグレーション」のためです。
これで一応、RailsアプリはHerokuサーバーにアップされてはいますが、しかしこのままでは動きません。まだ肝心のものが作成されていないからです。それは、「データベースのテーブル」です。今の段階ではModelクラスだけしかありません。そのModelを介してデータベースにデータを保管したりデータを取り出したりする、肝心のテーブルがないのです。
このテーブルは、ローカル環境などであれば直接SQLコマンドを発行したり、専用の管理ツールを使って作りますが、Herokuの場合、サーバーにデータベースを操作するための機能やツールなどは用意されていません。そこで利用するのが「マイグレーション」です。
マイグレーションは、SQLなどのコマンドを使うことなくデータベース関連を更新するための仕組みです。これはApp Studioの場合には、App Explorerの「Deploy」アイコンの中にある<Detabase>メニューのサブメニューから<Rake db:migrate on Heroku>メニューを選びます。あるいはコマンドプロンプトやコンソールから、以下のherokuコマンドを使っても実行されます。
これでテーブルがなければ生成されるのですが、まだ今の段階ではデータが全くありません。そこで、ダミーのデータを作っておくことにしましょう。「db」フォルダ内に、「seeds.rb」というファイルを作成してください。そして、そこに以下のように記述しておきましょう。
これでひと通り完成しました。改めてアプリをHerokuにデプロイし、アップロードされたアプリの/helo/indexにアクセスしてみましょう。ちゃんとseeds.rbに記述しておいたデータが表示されたでしょうか。
・デプロイの手順
1. commandsアイコンメニューから、<Stage>を選びます。もしメニューが選択できないようならこれは飛ばしてかまいません。
2. 続いて、commandsアイコンメニューから、<Commit...>を選び、ダイアログを呼び出します。そして、unstaged changesの「>>」ボタンを押し、全部staged changesに移動します。最後に、Commit messageにメッセージを適当に書いて「Commit」ボタンを押してください。これでコミットされます。
3. Deployのアイコンメニューから<Deploy App>を選びます。これでデプロイされます。
――なぜ、一度デプロイしておくのか。それは次の「マイグレーション」のためです。
■マイグレーション
これで一応、RailsアプリはHerokuサーバーにアップされてはいますが、しかしこのままでは動きません。まだ肝心のものが作成されていないからです。それは、「データベースのテーブル」です。今の段階ではModelクラスだけしかありません。そのModelを介してデータベースにデータを保管したりデータを取り出したりする、肝心のテーブルがないのです。
このテーブルは、ローカル環境などであれば直接SQLコマンドを発行したり、専用の管理ツールを使って作りますが、Herokuの場合、サーバーにデータベースを操作するための機能やツールなどは用意されていません。そこで利用するのが「マイグレーション」です。
マイグレーションは、SQLなどのコマンドを使うことなくデータベース関連を更新するための仕組みです。これはApp Studioの場合には、App Explorerの「Deploy」アイコンの中にある<Detabase>メニューのサブメニューから<Rake db:migrate on Heroku>メニューを選びます。あるいはコマンドプロンプトやコンソールから、以下のherokuコマンドを使っても実行されます。
heroku rake db:migrateこれを実行すると、「db」フォルダの中に「migrate」というフォルダが作られ、その中にRubyのスクリプトファイルが自動生成されます。これを開くと、下のリスト欄のようなものが生成されているのがわかるでしょう。ここに記述されているのが、マイグレーションの処理を行うためのスクリプトです。
これでテーブルがなければ生成されるのですが、まだ今の段階ではデータが全くありません。そこで、ダミーのデータを作っておくことにしましょう。「db」フォルダ内に、「seeds.rb」というファイルを作成してください。そして、そこに以下のように記述しておきましょう。
Helo.create(title:'Hello', content:'This is Test!')これは、Heloインスタンスを作成するものです。「create」というメソッドで、必要なデータをその後にまとめて記述し、呼び出します。これでHeloインスタンスが1つ作成され、Heloクラスに対応するテーブルにそのデータが1つ保管されます。記述したら、以下のコマンドを実行します。
heroku rake db:seedこれでseeds.rbの内容がアプリに適用されます。うまく機能しない場合は、再度デプロイしてから改めてheroku rake db:seedを実行してください。これで正しく機能するようになっているはずです。
これでひと通り完成しました。改めてアプリをHerokuにデプロイし、アップロードされたアプリの/helo/indexにアクセスしてみましょう。ちゃんとseeds.rbに記述しておいたデータが表示されたでしょうか。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※マイグレーションファイルの中身 class CreateHelos < ActiveRecord::Migration def change create_table :helos do |t| t.string :title t.string :content t.timestamps end end end ※seeds.rbの内容 Helo.create(title:'Hello', content:'This is Test!')
※関連コンテンツ