Ruby on Rails 入門

はじめに_

Ruby on Railsを味見してみる。

Railsのインストール方法は以下のとおり。

参考情報_

Ruby on Railsは使用するバージョンにより使用できるメソッドが大きく異なる。必ず自分が使用するバージョンの情報を参照すること。

  • Ruby on Rails Guide:公式情報。英語。
    • Ruby on Rails ガイド:有志による上記の日本語訳。ただし、最新バージョンに対応していないことがある。
  • Ruby on Rails API:公式情報。英語。Ruby on Railsで使用できるクラスやメソッドを調べることができる。

バージョンの確認方法_

2022年10月20日現在、以下のバージョンで動作を確認している。

% ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]

% gem --version
3.3.22

% sqlite3 --version
3.37.0 2021-12-09 01:34:53 9ff244ce0739f8ee52a3e9671adb4ee54c83c640b02e3f9d185fd2f9a179aapl

% rails --version
mkdir: /usr/local/bin/../version_cache: Permission denied
/usr/local/bin/rbenv-communal-gem-home: line 21: /usr/local/bin/../version_cache/3.1.2: No such file or directory
Rails 7.0.4

Windows Subsystem for LinuxでLinux環境を整えた場合_

VcxSrv(XLaunch)の起動_

gnome-terminalを利用するので、まず、VcxSrv(XLaunch)を起動する。VcxSrvのインストールで設定したVcxSrvのアイコンをクリックし、VcxSrvを起動する。

gnome-terminalの起動_

gnome-terminalの利用で設定したgnome-terminalを起動する。

Ubuntuターミナルを起動し、ターミナル上で以下を起動する。

% gterm &

作業ディレクトリの準備_

% cd
% mkdir -p IntroRoR
% cd IntroRoR

簡易ブログの作成_

Ruby on Railsガイド:Rails をはじめように従って簡易ブログを作成してみる。

% rails new blog 

% cd blog

Ruby on Railsの動作確認を行う。以下のコマンドで開発用Webサーバを起動する。

% rails server
% bin/rails server
=> Booting Puma
=> Rails 7.0.4 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 95272
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

Webブラウザで、http://localhost:3000/ にアクセスし、Ruby on Railsのメッセージが出ていたらインストール&設定成功している。なお、以下の画像のRubyやRailsのバージョンは上記のバージョンと異なるが気にしなくてよい。

開発用Webサーバを停止させる。Ctrlキーを押しながら「C」のキーを押す(以下、この操作をCtrl-cと表記する)。

Ruby on Railsの開発環境には http://localhost:3000/で経由でアクセスできる。

Hello Rails_

http://localhost:3000/articles にアクセスした際に「Hello Rails!」を表示するようにしてみる。ルーティング(あるURLにアクセスしたとき、どのコントローラーのどのアクションを利用するかを定める設定)を設定する。今回は ArticleControllerに記載されているindexアクションについて設定する。 config/routes.rb をお好きなエディタ(Ubuntu 20.04だとgeditやVScodeなど、macOSだとテキストエディタなど)で開き、以下のように編集する。

Rails.application.routes.draw do
  get "/articles", to: "articles#index"
end

続いてArticlesControllerとその関連ファイルを自動生成する。既にルーティングは設定しているのでルーティング設定はしないようにする。

まず、現在のディレクトリがblohディレクトリであること確認する。

% pwd 
/Users/gotoh/Sandbox/IntroRoR/blog

ArticlesControllerとその関連ファイルを自動生成する。

% bin/rails generate controller Articles index --skip-routes
      create  app/controllers/articles_controller.rb
      invoke  erb
      create    app/views/articles
      create    app/views/articles/index.html.erb
      invoke  test_unit
      create    test/controllers/articles_controller_test.rb
      invoke  helper
      create    app/helpers/articles_helper.rb
      invoke    test_unit

エディタ(Ubuntu 20.04だとgeditやVScodeなど、macOSだとテキストエディタなど)にて app/views/articles/index.html.erb を開く。

編集内容は以下の通り。

<h1>Hello Rails!</h1>
<p>My name is 「自分の名前」</p>

以下のコマンド実行し、Webブラウザでhttp://localhost:3000/articles にアクセスし、Hello Rails!が表示されていることを確認する。

% bin/rails server

確認できたら、開発用WebサーバをCtrl-cで停止する。

続いて、アプリケーションのトップページ(http://localhost:3000/にアクセスしたときに表示されるページ)を設定する。

エディタでconfig/routes.rbを以下のように変更して、保存する。

Rails.application.routes.draw do
  get "/articles", to: "articles#index"
  root "articles#index"
end

以下を実行し、http://localhost:3000/ にアクセスすると、http://localhost:3000/aritcles と同じページが表示されることを確認する。

% bin/rails server

確認できたら、開発用WebサーバをCtrl-cで停止する。

Ruby on Railsのシンプルな構造の練習_

Rails をはじめよう: 6 MVCを理解する以降の内容を順番に実行していくとRailsの基本的な使い方を学ぶことができる。この後は、リンク先の6章以降を練習していく。

その際の注意点として、リンク先はある程度Linuxコマンドを知っている人向け記載されているため、本講義の補助ページよりも説明が不親切になっている。以下に注意しながら自習してほしい。

  • bin/rails 〜 というコマンドは今回のチュートリアルだと blog ディレクトリ直下で実行されることを前提としている。bin/rails 〜とコマンドを実行し「zsh: no such file or directory: bin/rails」というエラーがでたときは、blog直下のディレクトリに移動すること。
    % pwd   (このコマンドで現在のディレクトリを確認する)
    % cd ~/IntroRoR/blog   (このページに従って作業している場合はこのコマンドでblog直下に移動できる)
    % pwd
    
  • 「〜のファイルを作成する」という記述がでた場合はtouchコマンドで空ファイルを作成すること。たとえば、「app/views/articles/show.html.erbを作成し、」という記述がある場合は以下のように空のファイルを作成する。
    % cd ~/IntroRoR/blog
    % touch app/views/articles/show.html.erb
    
  • bin/rails console で起動したインタラクティブモードから抜け出す場合は quit を入力する
  • 変更結果の確認するタイミングが明確に記載されていないので、章、節、項などの終わりに適宜サーバを起動し、Webブラウザで変更結果がどう反映されているのかを確認する。
    % cd ~/IntroRoR/blog
    % bin/rails server  (サーバの起動)
    
    ターミナル上でCtrl-c (サーバの終了)
    
  • 9.3 concernを使うで既存のテーブルに新たにフィールド(列)を追加している。このため、この節の前までにデータを入力している場合にはWebブラウザから確認するときエラーが発生する(新たに追加したフィールド status に値が入っていないため)。この時にはデータベースをリセットして作り直す。
    % bin/rails db:migrate:reset
    

URLと呼び出されるコントローラーおよびアクションのまとめ_

上記の7つのメソッド new, create, show, index, edit, update, destroy があるデータをコントローラを通して作成(Create)、読み込み(Read)、更新(Update)、削除(Delete)するときに使う基本メソッドである。Ruby on RailsではURL+HTTPメソッドと上の7つの基本メソッドが自動的に結びついている。

また、newメソッドに対応する new.html.erb、showメソッドに対応する show.html.erb、indexメソッドに対応するindex.html.erb、editメソッドに対応する edit.html.erbがそれぞれのメソッド終了後に自動的に呼び出される。

コントローラがモデルで定義されている処理によってデータベースからデータを引き出し、ビューに引き渡す処理をしたうえでビューに引き渡すというのがRuby on RailsのModel-View-Controller(MVC)モデルである。

ArticlesControllerを経由してArticleModel(データベースのarticlesテーブル)を操作する際のURLとコントローラの対応は以下のとおりである。

URL対応するコントローラのアクション対応するviewsのファイル操作の意味
http://localhost:3000/articlesindexindex.html.erbarticleの一覧表示
http://localhost:3000/article/:id (GET)showshow.html.erbarticleの表示
http://localhost:3000/article/newnew, createnew.html.erb新規作成
http://localhost:3000/article/edit/:idedit, updateedit.html.erb更新
http://localhost:3000/article/:id (DELETE)destroy--削除

開発用Webサーバを起動し、http://localhost:3000/articles をWebブラウザで開き、URLと開発用Webサーバのログを見比べながら、上の表の対応関係を確かめてほしい。

% rails server

おわりに_

関係データベースシステムの重要な応用例がWebアプリケーションである。Ruby on Railsは関係データベースを利用する際にSQLをソースコード内に記述しなくても、Rubyプログラム上から簡単にアクセスできる仕組みオブジェクト-リレーショナルマッピング(ORマッピング)を採用している。

参考

しかし、良いWebアプリケーションを作成するためには良いデータベースの設計が必要であるし、ORマッピングを用いるとしてもSQLを理解した上で、効率の良いソースコードを書かなくてはならない。

この講義を通して学んだ内容は、このようなWebアプリケーション開発などの応用事例の基礎となる事柄である。

戻る_