====== はじめてのRailsアプリケーション ====== Railsでの開発がどんなものなのかを味わってみませんか? このチュートリアルに従って始めましょう! ===== Part 1 - インストール ===== 対応したプラットフォームのRuby/Railsをインストールし、SQLiteがインストールされていることを確認します(Macをお持ちの場合は付属しています)。インストールに関するwikiページはこちらです: [[getting-started/installation/mac|Mac]]、 [[getting-started/installation/windows|Windows]]、 [[getting-started/installation/linux|Linux]]。 ===== Part 2 - 作成 & 実行 ===== - Railsのコマンドラインツールを起動して、アプリケーションを作成します。$ rails myappこれで、Railsアプリケーションのスケルトンが作成されます。 - このように文字を打ち込んでディレクトリに移動します: $ cd myapp - Railsサーバーを起動します: $ ruby script/server //{{:getting-started:installation:information.png|}}Note: You may not need the "ruby" part of that if you're on a Mac or Linux.// - ブラウザを起動し、http://localhost:3000 を開きます。Rails が起動していることがわかるでしょう; これだけです! うまくいきました、あなたの実力です。 ===== Part 3 - データベースとScaffoldの作成 ===== - 好みのエディタでアプリケーションを開きます。 - ''config/database.yml'' ファイルを開きます。ここでは、アプリケーションごとに異なるデータベースを設定できますが、この例では何も設定を変更するべきではありません。デフォルトのデータベース名は、すでにお気づきかもしれませんが、Railsアプリケーションから取得されています。 - もう一つのコマンドプロンプトを開き(こうしてサーバーをバックグランドで起動させたままにし)、アプリケーションディレクトリに移動して、こちらを実行します: $ rake db:create これで開発データベースが作成されます。 - さあ、最初のテーブルとインターフェースを作成しましょう。Railsでは、このことは[[http://guides.rubyonrails.org/getting_started_with_rails.html#_getting_up_and_running_quickly_with_scaffolding|scaffold]]を作成してここから開始することを意味しています。scaffold はシンプルにできている開始点であり、ここから複雑なコードを継続的に追加できます。なんのパラメータも設定せずに、最初のscaffoldコマンドを実行してみましょう: $ ruby script/generate scaffold しばらくするとアウトプットが生成されます。どのようにコマンドを使うかが表示されます。 - 次に進んで、scaffoldを利用してウェブアプリケーションを生成してみましょう。usersテーブルを作成します:$ ruby script/generate scaffold user first_name:string last_name:string active:boolean コピーペーストでもかまいませんよ、誰にも言いませんから。これで、scaffoldが作成されました、これはたくさんのテンプレートの固まりです。 - では、 [[http://guides.rubyonrails.org/getting_started_with_rails.html#_running_a_migration|マイグレーションを実行]] しましょう。これはデータベースにテーブルを作成してくれます。$ rake db:migrate - 次に、ウェブブラウザにもどり ( サーバーを停止していた場合は起動して)、http://localhost:3000/users に移動します。 - 何人かのユーザーを作成し、Railsのインターフェースを楽しんでください! ===== Part 4 - 機能の追加 ===== - bio 列をユーザーに付け加えるのを忘れていたことがわかりました - しまった!新しくマイグレーションを作成して、このカラムを追加することもできますし、作成されたマイグレーションをロールバックして取り消すこともできます。後者を実施しましょう。テーブルを削除して、カラムを追加するためには、このコマンドを実行します:$ rake db:rollback これでひとつのマイグレーションがロールバックされます。 - ''/db/migrations/'' または ''/db/migrate/'' ディレクトリにあるマイグレーションを開きます。一つだけファイルがあるはずです。 - どのようにマイグレーションが"up"メソッドでマイグレートアップを実現し、"down"メソッドでマイグレートダウンを実現しているのかがわかります。 - bio列を追加したい場合、''t.boolean :active'' 行のあとに、こちらを追加します: t.text :bio - ファイルを保存して、''rake db:migrate'' を再び実行し、データベースをマイグレーションします: $ rake db:migrate - この時点でブラウザをチェックしても、bio列は自動的にはユーザー情報やフォームには現れていません。これは自分で追加する必要があります。はい、ここでこのファイルを消してscaffoldコマンドを実行することもできますが、それでは何も学ぶことがありません。 - ''/app/views/users/new.html.erb'' ファイルを開きましょう。これが新しいフォームを記述しています。active checkbox の下に、下記のコードを追加してbio列を追加する必要があります。

<%= f.label :bio %>
<%= f.text_area :bio %>

- ブラウザから新しいユーザーのページを開きます。 http://localhost:3000/users/new bio列が表示されていて、新しいユーザーはbioと一緒に追加できます。{{:getting-started:installation:information.png|}} 追加で、"edit" ビュー(''/app/views/users/edit.html.erb'' にあります)を更新したい場合も同じコードを使うことができ、ユーザーのbioを更新できるようになります。 - When you create a user, you're brought automatically to his/her show page. ページを表示するときに、bioを追加しましょう。''/app/views/users/show.html.erb'' ファイルを開き、, and underneath the Active field の下にこれを追加します:

Bio: <%=h @user.bio %>

- ファイルを保存し、ブラウザから確認します。最初に、変更が確認できない場合は、"show" ページにいること ( "index" ではないこと)を確認しましょう。このパートが達成できたら、野蛮に"やった!"とさけびましょう。偉大なる進歩です。 ===== Part 5 - はじめてのバリデーション ===== - Railsでは、モデルのファイルでバリデーションを行います、では、''/app/models/user.rb''を開いてみましょう。 - ユーザーがファーストネームとラストネームを入力する必要があるとします。その場合、ユーザーモデルに対してバリデーションを追加しましょう、それはこのようになります: class User < ActiveRecord::Base validates_presence_of :first_name, :last_name end - ファイルを保存し、ブラウザを開き、ファーストネームかラストネームのいずれかなしでユーザーを作成してみます。 - Railsには多くのヘルパーバリデーションクラスがあり、[[http://apidock.com/rails/ActiveRecord/Validations/ClassMethods|APIページ]]の右側で一蘭を確認できます。 {{:getting-started:installation:information.png|}}追加で、お楽しみとしてアプリケーションにもう一つのバリデーションを追加してみましょう。 ===== Part 6 - レイアウトの変更 ===== - アプリケーションのHTMLソースをブラウザで確認すると、アプリケーションがある種のレイアウトで作成されていることに気づくでしょう。デフォルトでは、"scaffold" コマンドを実行すると、 ''/app/views/layouts/users.html.erb'' ファイルが作成され、レイアウトとして利用されます。 - ほとんどのコントローラーにたった一つだけのレイアウトを利用したくなるでしょう、ですからもっと一般的な名前に変更します。''users.html.erb'' を ''application.html.erb''にリネームします。Railsの規約では、layoutsディレクトリに''application.html.erb''ファイルがあった場合は、すべてのコントローラーがそれがデフォルトとして利用します(必要な場合はあとでオーバーライドすることも出来ます)。 - お楽しみとして、レイアウトに何か追加してみましょう。''application.html.erb'' を開き、このような追加をします:

Rails Rocks!

- ファイルを保存し、ブラウザを開くと、行った変更がすべてのウェブサイトのページに反映されていることがわかるでしょう。 ===== Part 7 - コンソールを楽しむ ===== - ユーザーモデルで楽しんでみましょう。コマンドプロンプトから以下のように実行します:$ ruby script/console Ruby IRB セッションに入り、モデルにアクセスしています。 - 楽しむ前に、下記のコマンドを実行すると生成されるSQLコマンドを確認することができます。$ ActiveRecord::Base.logger = Logger.new(STDOUT) - 単純なRuby構文を試してすべて問題なく動作していることを確認します:puts "Hello Dude!" - では、モデルでいくつか遊んでみましょう。このようにして新しいモデルを作成します: u = User.new u.first_name = "Gregg" u.last_name = "Pollack" u.save Notice the SQL that is generated. - すべて1行で作成します: User.create(:first_name => "Joe", :last_name => "Blow") エラーになった場合は、文法の問題がないかを確認します。 - ファーストネームがJoeのユーザーを取得し、名前を”Johnson”に変更してみます。 u = User.find_by_first_name("Joe") u.last_name = "Johnson" u.save SQLが生成されることが確認できました; すばらしい! - 次にこのユーザーを削除します。u.destroy - これらのコマンドを試してそれぞれ何が行われているかを見て楽しみましょう: User.first User.last User.all 変数に好きな値を設定し、属性を変更しながら遊んでみましょう。 ''.all'' が配列を返すことを確認します、 [0] や [2] を利用して配列の特定のアイテムを参照してはどうでしょう。 - システムのすべてのユーザー名を大文字で表示させてみましょう: User.all.each {|user| puts user.first_name.upcase } - ファーストネームが表示され、ユーザーの配列が返されていることも確認できます。Rubyのあらゆるメソッドは、たとえそれがnilであっても何らかを返すことを覚えておきましょう。 - システム中のすべてのラストネームを保持する配列を作成してみましょう: User.all.map {|user| user.last_name } ここで興味があるのは返り値で、ラストネームの配列のはずです。 - [[http://apidock.com/rails/ActiveRecord/Base|API ページ]]のこちらを確認します。右側に、ActiveRecordsオブジェクトで実行できるすべてのメソッドが記載されています。いくつか試してみましょう。 ===== Additional Reading ===== The [[http://guides.rubyonrails.org/getting_started.html|Getting Started with Rails Guide]] contains another fun walkthrough, but with additional explanation of Rails architecture.