Ruby on Railsを嗜む:アプリケーション作成や表示確認part2

Ruby on Railsの初心者向けの内容になっています。

前回はRuby on Railsでどんなことができるかや、インストールするまでの方法を勉強しました。今回は実際にアプリケーションを作成して、起動とその表示確認をしてみたいと思います。

アプリケーションの作成

前回でRails開発環境の構築が完了したので、アプリケーションを1つ作ってみましょう。とりあえず作ってみてわかることもあるでしょう(実はまだアプリケーションといのがしっくりきてない)

アプリケーションを作る場所は、前回用意したrailsフォルダに作成します

$ cd ~/rails/

ニョロ/でHomeディレクトリに直接移動できます。覚えておくと便利です。

Railsでは、アプリケーションの作成、モデルやコントローラーの作成、サーバーの起動にrailsコマンドを使用します。アプリケーションを作成するには「rails new アプリケーション名」で骨格部分の成形を行います。

ここでは野球チームに関するアプリケーションを作ってみたいと思います。下記コマンドでプロジェクトを作成しましょう

$ rails new baseball -BCMT --skip-coffee -d sqlite3

実行するとわーっと作成されたものが表示されます

      create
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in /Users/ユーザー名/rails/baseball/.git/
      create  package.json
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/javascripts/application.js
      create  app/assets/javascripts/cable.js
以下略・・・

rails new コマンドで baseballディレクトリを作成し、Railsアプリケーションに必要なディレクトリやファイル一式を自動的にコピーします。コマンド末尾についているオプションに関しては後で説明をいたします。

無事作成ができたら、baseballフォルダに移動しましょう

$cd baseball

rails new のオプションについて

今回利用したオプションに関して興味上があれば確認してください。飛ばしても問題ありません

オプション意味
-B , –skip-bundlebundleコマンドを実行しない
-C , –skip-opition-cableAction Cableのファイル群を生成しない
-M , –skip-action-mailerAction Mailerのファイル群を生成しない
-T , –skip-testテスト関連のファイル群を生成しない
–skip-coffeeCoffeeScriptを使用しない
-d , –databaseデータベース管理システムの種類を指定

一番注意したいのは-Bのオプションです。アプリケーションを用意したあとに、下ごしらえをしたい場合、bundleコマンドが自動実行しないようにオプションを追加します。

データベースの指定に関しては、デフォルト設定がsqlite3なので、なくても大丈夫ですが、明示的にしています。

bundle lockコマンドの実行(macOS 及び WSL/Ubunta)

Mac/Ubuntaなどの環境で開発している方は、bundle lockコマンドを使ってGemfile.lockファイルを作成もしくは更新するためのコマンドです。オプション–add-platformを指定することで、MSYS2/MinGW用のGemパッケージがGemfile.lockファイルに含まれるようになります。

$ bundle lock --add-platform x64-mingw32 x86-mingw32
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies.......
Writing lockfile to /Users/ユーザー名/rails/baseball/Gemfile.lock
Gemfile.lockとは?

インストールされたgemや、依存関係にあるgemが記載されるファイルだそうです。アプリケーションに使うためのものが何かが記載されるファイルと言う感じで覚えておけばよいと思います。bundle lockコマンドの実行を省略すると、bundle installコマンドの実行時に警告メッセージが表示されます。

なお、RailsアプリケーションをMSYS2/MinGWの環境で動かす計画がないのであれば、特に不要です。

bundle install コマンドの実行

次のコマンドでRailsアプリケーションの開発に必要なGemパッケージ群をインストールします。

$ bundle install
中略
Bundle complete! 14 Gemfile dependencies, 64 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

最後の方に上記の2行が表示されているとインストール成功です。

Bundler:複数人で作業をする場合重要!

Bundlerとは、Gemパッケージの管理とインストールのためのツールです。RailsアプリケーションなどRubyで書いたアプリケーションのために使われます。RailsアプリケーションはたくさんのGemパッケージを必要としますが、複数の開発者が共同で開発をすすめるときには、開発者の間で同じバージョンのGemパッケージを用意しなければなりません。開発用のパソコンと本番サーバーの間でも同様です。Bundlerは、特定のRailsアプリケーションに必要なGemパッケージをリストアップし、複数のコンピューター感で簡単に動機が取れるようにするものです。

プロジェウトを複数人で運用する場合にも、ソースコードとBundlerの設定を共有することで必要なGemパッケージをインストールすることができ、簡単に環境を揃えることができます。

「rails new」でアプリケーションを作成すると、アプリケーションのルートディレクトリに自動的にGemfileが作成されます。このファイルにはBudlerを使ってインストールするGemパッケージの一覧が記述されています。先程作った自分のbaseballアプリケーションのGemfileを確認してみましょう。Gemfileに記載されている「gem 'パッケージ名’」が必要なパッケージになります。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
 
ruby '2.5.1'
 
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
以下略

手順通りにアプリケーションを用意していた場合、4行目の「ruby '2.5.1’」と記載されていると思います。これは、Rubyのバージョン指定であり、ここで指定されたバージョンでしかこのRailsアプリケーションを起動できないことを意味します別のバージョンのRubyでもRailsアプリケーションを動かしたい場合は、制限を緩める必要があります。

以下のように変更することで、バージョンに対しての制限や緩和を行うことができます

記述バージョンの制限
gem 'rails’ , '5.2.0’バージョン5.2.0が必要
gem 'sqlite3’どのバージョンでもOK
gem 'sass-rails’, '~>5.0’バージョン5.0以上、6未満
gem 'uglifier’, '>= 1.3.0’バージョン1.3.0以上
gem 'listen’ , '>= 3.0.5’ , '< 3.2’バージョン3.0.5以上,3.2未満

「bundle install」を実行すると、Bundlerは各パッケージが依存している他のパッケージをすべて調べてインストールします。同時に、Gemfileと同じディレクトリにGmefile.lockというファイルを作成し、そこに必要なパッケージのバージョン番号を記録します。Gemfile.lockは自動的に生成されるものなので、内容を編集する必要はありません。

2GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.3)
      actionpack (= 5.2.3)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.3)
      actionpack (= 5.2.3)
      actionview (= 5.2.3)
      activejob (= 5.2.3)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.3)
      actionview (= 5.2.3)
      activesupport (= 5.2.3)
      rack (~> 2.0)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
以下略

プロジェクトをスタートアップする人がGemfile.lockを作成し、他の開発者がGemfile.lockを含んだ状態で「bundole install」を実行すると、BundlerはGmefile.lockの方を読み込んで、そこに記述されているバージョンのGemパッケージをインストールします。

実際に動かして確認をしてみる

ここまでインストールやプロジェクトの準備などをやってまいりましたが、やっぱり画面がでないとよくわからん!ということで、いよいよRailsを実際に動かしてみたいと思います。

~/rails/baseballに移動して、「bin/rails s」コマンドを実行すると、Pumaというウェブサーバーがパソコンの中で起動します。「bin/rails server」と入力してもOK

PC名:baseball ユーザー名$ bin/rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
 
 
 

上記のような表示で止まると、サーバーが立ち上がっています。確認するにはブラウザのURL欄に「http://localhost:3000」と入力して、このサーバーにアクセスしてください。Railsアプリケーションの初期画面が表示されます。うまく表示されないときは「http://127.0.0.1:3000」と入力してみてください

こちらのような画面が表示されると成功です。Railsのアプリケーションがインストールされた状態になります。ターミナルで「Ctrl+C」を押すとサーバーを停止することができます。忘れずに止めておきましょう。

この画面が表示されたらこれまでの作業は順調なはずです。

まとめ

アプリケーションを作成して、表示されるところまで確認できました。

実際に画面が表示されると感動しますね。PHPとかを開発してたときより、ローカル環境が簡単に作れてる気がしてます。

次回は、実際に自分作成した画面がトップページに表示されるように変更を加えていきたいと思います。