Rails

Rails をAPI モードで new する

Ruby on Rails 5 から API モードが追加されました。
View 部分に関するファイルや Gem が外れている、API 開発に特化したアプリケーションを作成できます。

バージョン指定するための準備

さて、今回使用したい Rails のバージョンが 5.1.4 です。

ローカルの gem list を確認してみて、どのバージョンがインストールされているのかを確認します。

$ gem list rails

*** LOCAL GEMS ***

autoprefixer-rails (9.0.0, 7.1.4.1)
capistrano-rails (1.4.0)
coffee-rails (4.2.2, 4.1.1, 4.1.0, 4.0.1)
compass-rails (2.0.0)
factory_girl_rails (4.4.1)
font-awesome-rails (4.7.0.4)
haml-rails (1.0.0)
jquery-rails (4.3.3, 4.3.1, 4.2.1, 4.0.5, 4.0.4, 4.0.3, 3.1.5)
pry-rails (0.3.6, 0.3.4)
rails (5.2.1, 5.2.0, 5.0.7, 5.0.1, 4.2.6, 4.2.5, 4.2.3, 4.2.1, 4.1.6)
rails-controller-testing (1.0.2)
rails-deprecated_sanitizer (1.0.3)
rails-dom-testing (2.0.3, 1.0.9, 1.0.8, 1.0.7, 1.0.6)
rails-html-sanitizer (1.0.4, 1.0.3, 1.0.2)
rails_12factor (0.0.3)
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
rspec-rails (3.8.0)
sass-rails (5.0.7, 5.0.6, 5.0.4, 5.0.3, 4.0.5, 4.0.4, 4.0.2)
sprockets-rails (3.2.1, 3.2.0, 2.3.3, 2.3.2, 2.2.4, 2.0.1)

ということで、5.1.xはいませんので、ローカルの gem に追加していきます。

$ gem i -v 5.1.4 rails
*** LOCAL GEMS ***

autoprefixer-rails (9.0.0, 7.1.4.1)
capistrano-rails (1.4.0)
coffee-rails (4.2.2, 4.1.1, 4.1.0, 4.0.1)
compass-rails (2.0.0)
factory_girl_rails (4.4.1)
font-awesome-rails (4.7.0.4)
haml-rails (1.0.0)
jquery-rails (4.3.3, 4.3.1, 4.2.1, 4.0.5, 4.0.4, 4.0.3, 3.1.5)
pry-rails (0.3.6, 0.3.4)
rails (5.2.1, 5.2.0, 5.1.6, 5.1.4, 5.0.7, 5.0.1, 4.2.6, 4.2.5, 4.2.3, 4.2.1, 4.1.6)
rails-controller-testing (1.0.2)
rails-deprecated_sanitizer (1.0.3)
rails-dom-testing (2.0.3, 1.0.9, 1.0.8, 1.0.7, 1.0.6)
rails-html-sanitizer (1.0.4, 1.0.3, 1.0.2)
rails_12factor (0.0.3)
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
rspec-rails (3.8.0)
sass-rails (5.0.7, 5.0.6, 5.0.4, 5.0.3, 4.0.5, 4.0.4, 4.0.2)
sprockets-rails (3.2.1, 3.2.0, 2.3.3, 2.3.2, 2.2.4, 2.0.1)

ということで、5.1.x がインストールできました。

rails new

というわけで、無事にインストールしたいバージョンの gem をローカルにインストールしたので、いよいよアプリケーションを new します。

$ rails _5.1.4_ new app_name --api

サーバが起動するか確認する

$ cd app_name
$ rails s

http://localhost:3000/ にアクセスして以下が表示されたら成功です!
Image from Gyazo

最後に DB も作っておきます。

$ rake db:create
Created database 'db/development.sqlite3'
Created database 'db/test.sqlite3'

RESTful API とは?

最近までRailsのブートキャンプのために、TECH::EXPERTの夜間・休日コースに通っていました。渋谷の教室に主に通っていましたが、5ヶ月ほど経ってきた頃に疲労が・・・。
でも、そんなこんなでなんとか自分でオリジナルのアプリケーションをつくる最終課題に突入しましたので、その備忘録。

何を作るのか

というわけで、野球が大好きなので野球観戦日記を登録できるアプリケーションを作成しようと考えています。
私は普段の仕事では、Vue.js を使用しているのと、AWS の便利な所を組み合わせる予定で、Rails では RESTful API を作成しようと思います。

API(Application Programming Interface)とは?

APIとは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。(引用: IT用語辞典 e-Words

ということです。こんなときは、実例をみるのが一番ということで、よくお世話になる connpass のサイトの情報を API を使って覗いてみましょう。
connpass では、API リファレンスが存在します。こちらにアクセスしてみると色々書いてありますね!
イベントの一覧を取ってくるのは、
https://connpass.com/api/v1/event/
というAPIです。ですが、このAPIだと自分のほしい情報があるのかないのか、なんなのかわかりません。
そこで、rails という文字列の含まれるイベントを検索してみましょう
https://connpass.com/api/v1/event/?keyword=rails
これでもまだまだ多いので、rails 文字列の入っているイベントを1件だけ取得してみましょう!
https://connpass.com/api/v1/event/?keyword=rails&count=1
これで取得できます。これが、API です!

REST(REpresentational State Transfer)とは?

一般によく使われる狭義のRESTは、パラメータを指定して特定のURLにHTTPでアクセスすると、XMLで記述されたメッセージが送られてくるようなシステムおよび呼び出しインターフェース(「RESTful API」と呼ばれる)のことを指す。(引用: IT用語辞典e-Words

REST の設計原則は以下の4つだそうです。

  1. セッションなどの状態管理を行わない(やり取りされる情報はそれ自体で完結して解釈することができる)
  2. 情報を操作する命令の体系が予め定義・共有されている
  3. すべての情報は汎用的な構文で一意に識別される
  4. 情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができる(ハイパーメディア的な書式で情報を表現する)

(引用: IT用語辞典e-Words

ちょっとむずかしく聞こえますが、なんとなくわかっていればなんとか先へ進めるはず!まずは作成してみようということで、 rails new app_name –api のコマンドを叩きにいきましょう!