Railsチュートリアルの第二章です。
アプリの計画
$ cd rails_projects $ rails new demo_app $ cd demo_app
デモアプリケーション用のGemfile。
「--without production」オプションを追加することで、本番用のgemを除いたローカルgemをインストールします。
$ bundle install --without production $ bundle update $ bundle install
Gitでバージョン管理
$ git init $ subl .gitignore $ git add . $ git commit -m "Initial commit"
.gitignore内容
GitHubにリポジトリを作成してgit pushします。SSHを使えばパスワードを聞かれません。
$ git remote add origin https://github.com/<username>/demo_app.git $ git push -u origin master
これで、アプリ自体を作成するための下準備が整いました。
ユーザーのモデル設計
マイクロポストのモデル設計
Users リソース
Railsのscaffoldは、rails generateスクリプトにscaffoldコマンドを渡すことで生成されます。scaffoldコマンドの引数には、リソース名を単数形にしたもの (この場合はUser) を使用し、必要に応じてデータモデルの属性をオプションとしてパラメータに追加します。
$ rails generate scaffold User name:string email:string
name:stringとemail:stringオプションを追加することで、Userモデルの内容が図2.2の表のとおりになるようにします (なお、idパラメータはRailsによって自動的に主キーとしてデータベースに追加されるため、追加不要です)。
続いてデモアプリケーションの開発を進めるには、以下のようにRakeを使用してデータベースをマイグレート (migrate) する必要があります。
$ bundle exec rake db:migrate
このコマンドは、単にデータベースを更新し、usersデータモデルを作成するためのものです (データベースのマイグレーションの詳細については 6.1.1以降で説明します)。なお、現在のGemfileに対応するバージョンのRakeが確実に実行されるようにするために、bundle execを使用してrakeを実行します
ここまで実行すれば、以下のようにrails sコマンド (rails serverコマンドの短縮版) を実行してローカルWebサーバーを起動できるようになります。
$ rails s
ここからアクセスします。
ユーザーページを表示する
Railsで自動でページが作成されるみたいです。たとえば次のURLでユーザ一覧ページを表示できます。
新規作成、編集、削除、一覧表示の機能を利用できます。
MVCの挙動
- ブラウザは/usersというURLへのリクエストを発行する。
- Railsは/usersをUsersコントローラ内のindexアクションに割り当てる (ルーティング)。
- indexアクションはUserモデルに「すべてのユーザーを取り出せ」と指示する (User.all)。
- Userモデルはすべてのユーザーをデータベースから取り出す。
- Userモデルはユーザーの一覧をコントローラに返す。
- コントローラはユーザーの一覧を@users変数に保存し、indexビューに渡す。
- ビューは、その中に埋め込まれているRubyを使用してHTMLを生成する。
- コントローラは、生成されたHTMLをブラウザに返す。
MVC
- app/models/user.rb (モデル)
- app/views/users/index.html.erb (ビュー)
- app/controllers/users_controller.rb (コントローラ)
継承について
Userクラスにおける継承。
app/models/user.rb
class User < ActiveRecord::Base . end
Micropostクラスにおける継承。
app/models/micropost.rb
class Micropost < ActiveRecord::Base . end
デモアプリケーションのデプロイ
GitHubにpush
$ git add . $ git commit -m "Finish demo app" $ git push
Herokuにデプロイ
$ heroku create $ git push heroku master
アプリケーションのデータベースが動作するようにするには、以下を実行して本番データベースのマイグレーションを行う必要もあります。
$ heroku run rake db:migrate
herokuにデプロイしたのでheroku openコマンドでアプリにアクセスできます。アクセスすると次のようなエラーページが表示されますが、これはデフォルトページがサンプルのためです。
今回確認したusersなどのパスを指定すると一覧画面や登録画面を表示できます。