Ruby on Rails5を起動してみる

/

導入

Ruby on RailsはRubyを利用したWebアプリケーションをフレームワークです。
少ないコードでWebアプリケーションを作れることから人気を獲得し他の多くのフレームワークに影響を与えたほか、Rubyを人気のプログラミング言語の一つに押し上げる要因の一つとなりました。

現在でも人気のフレームワークの一つで、2016年6月にVer5.0もリリースされたのでRailsのアプリケーションをインストールして起動するまでを試してみました。

rubyonrails.org

実行環境

  • ubuntu16.04LTS
  • Ruby 2.3.1
  • Ruby on Rails 5.0.0.1

事前準備

Ruby

RailsはRuby用のフレームワークなので実行環境にRubyがインストールされている必要があります。
Rubyのインストールに関しては以前にとりあげたのでここでは扱いませんが、Rails5.0はRuby2.2.2以上に対応となっているため比較的新しいバージョンのRubyを用意する必要があります。

# Rubyのバージョンの確認
ruby -v
ruby 2.3.1

Rubyのインストール
rbenvでRubyのバージョンを管理する

Ruby on Rails

Ruby on RailsはRubyGemsからインストールします。
今回はubuntuで実行しましたがMacOSなどでも基本的な手順は変わらないと思います。

インストール

$ gem install rails
$ rails --version
Rails 5.0.0.1

Railsプロジェクトのビルド

Railsのgemをインストールした後はターミナルからrails newコマンドを実行する事でRailsのアプリケーションを作成してくれます。

# rails new [app_name]
$ rails new my_app

create  
create  README.md
create  Rakefile
...

コマンドを実行してからしばらくするとアプリのビルドが完了しディレクトリ内に指定した名前のアプリが作成されているはずです。

Railsアプリの開発

Railsアプリのビルドが完了したので動作の確認をしていきます。

RailsはWebアプリケーションのフレームワークなので作ったアプリを実際に公開する際にはWebサーバーやデーターベースなどを準備する必要がありますが、開発段階では組み込みのWebサーバーとSQLite3によるデーターベースがRailsとgemによって最初から用意されているのでアプリケーションをビルドするだけですぐに開発を始める事が出来ます。

ビルドインサーバー

Railsの組み込みのサーバーはアプリのrootディレクトリからrails serverコマンドで実行します。

cd my_app
$ rails server

サーバーはデフォルトではhttp://localhost:3000で起動されるので、ブラウザからアクセスすればRailsアプリのトップページが表示されます。

Rails5.0
デフォルトのトップページ

またサーバー起動時にオプションをつける事によって任意のポートでサーバーを起動させる事も出来ます。

# http://localhost:4000でサーバーを起動
$ rails server -p 4000

組み込みサーバーを起動させた状態でアプリ内のソースコードを変更するとサーバーのデータも自動的に更新されるため、ブラウザから実際の状態を確認をしながらRailsアプリの開発を行うことが出来ます。

サーバーの終了は起動中のターミナルからCtrl-Cを押します。

データーベース

Railsアプリ内のGemfileを確認するとわかりますがRailsプロジェクトの開発&テスト用のデーターベースにはSQLite3が指定されています。
SQLiteはMySQL等と違い独立した一つのファイルでデーターベースを管理するため、事前に設定をしなくともRailsのアプリケーションからデーターベースを扱う事が出来ます。

...
group :development, :test do
  gem 'byebug', platform: :mri
  gem 'sqlite3'
end
...

scaffold

実際にSQLiteのデーターベースがRailsから操作出来るかscaffoldを使って確認してみます。
scafflodはモデルやビューなどのアプリに必要なソースコードの作成やルーティングの設定などを自動で行ってくれるコマンドです。

$ rails generate scaffold Bookmark title:string address:text description:text

scaffoldを実行するとmy_app/db/migrate/にマイグレーションファイルが作成されるので、このファイルを使ってマイグレーションを実行します。マイグレーションを行うことでSQLのコマンド操作を行わなくてもRailsを通してデータベースの作成・編集などを行うことが出来ます。

# マイグレーションの実行
$ bundle exec rake db:migrate

マイグレーションを実行した事でBookmarksのデータベースが作成されているはずなので、Railsから操作出来るか確認してみます。

scaffoldによってBookmarksのビューも作成されているので、組み込みサーバーを立ち上げhttp://localhost:3000/bookmakrs/newに接続するとブックマークの新規登録画面が表示されます。

ブックマークの新規登録画面
ブックマークの新規登録画面

このページから必要事項を入力して「Create Bookmarks」をクリックすると新たなブックマークがデーターベースに登録されます。

新たなブックマークを登録
新たなブックマークを登録

登録されたブックマークの一覧は/bookmarks/によって確認出来ます。

ブックマークの一覧
ブックマークの一覧

Rails console

ブラウザを通してアプリケーションからのデーターベース接続を確認しましたがRailsのコンソール機能を使う事も出来ます。
ターミナルからrails consoleと入力することでターミナルが待機状態になり、対話形式でRailsを読み込んだRubyが実行出来ます。

$ rails console
irb(main):001:0> 

このコンソールからBookmark.allと入力すると先ほどブラウザを通して追加された値が表示され、データーベースに保存されている事が確認出来ます。

irb(main):001:0> Bookmark.all
  Bookmark Load (1.6ms)  SELECT "bookmarks".* FROM "bookmarks"
=> #<ActiveRecord::Relation [#<Bookmark id: 1, title: "google", address: "http://google.com", description: "Goolge is Search engine.", created_at: "2016-11-16 05:01:16", updated_at: "2016-11-16 05:01:16">]> 

Railsのコンソールを終了にはコンソールにexitと入力します。

あとがき

RailsはWebアプリのフレームワークの普及のきっかけとなっただけあって完成度が高いです。
セットアップの手順を見てもRubyさえあればgemからインストールして組み込みのサーバーを立ち上げるだけで特に設定の必要なく開発を始める事が出来てしまいます。
CakePHPやLaravelなどでもComposerによるインストールやVagrantを利用した開発環境などが整備されてセットアップしやすくなっていますが、実際に試してみるとRailsの扱いやすさはそれらよりも頭一つ抜けていると感じます。
実際のデプロイになるとRubyとPHPの違いもあって逆に少し苦労する部分もあったりしますが、初心者には環境構築が最初の壁だと言われているので、その段階でつまづいた人はRailsを試してみると上手くいくんじゃないかと思います。