Rails
api
rest
rails-api

Rails:REST APIのテンプレ作成

More than 3 years have passed since last update.

RailsでAPIを作る時に毎回テストの設定が面倒なのでUserモデルでベースを作成してみました。

https://github.com/kanadai/rails-api-starter

starterはuserを作成した状態です。

以下のgemでymlに記載したAPI仕様と実装の整合が取れるようになっています。


gem

・prmd

・rack-json_schema

・active_model_serializers(JSON用)


新規modelの作成(userの場合)

bin/rails g scaffold user name:string email:string password:string

bin/rake db:migrate
bundle exec prmd init --yaml user > docs/schema/yml/user.yml


user.ymlとrspecを更新

*rspecと合っていないとテストが落ちます

ymlとrspecの整合が取れていないと、request specが500エラーで落ちます。

その場合はconfig/application.rbconfig.middleware.use Rack::JsonSchema::ErrorHandlerをコメントアウトすると原因が探しやすいかもしれません。


config/application.rb

   if ENV['RAILS_ENV'] == 'test'

system('bundle exec prmd combine doc/schema/yml/* > doc/schema/schema.json')
schema = JSON.parse(File.read("#{Rails.root}/doc/schema/schema.json"))
これ→# config.middleware.use Rack::JsonSchema::ErrorHandler
config.middleware.use Rack::JsonSchema::ResponseValidation, schema: schema
end

仕様を書く必用がなければ、上記のif ENV['RAILS_ENV'] == 'test'のブロックを消せばrspecだけで動きます。


テスト実行

guard

Rspecはかなり冗長ですm(__)m

参考: http://qiita.com/kata0hka/items/e5b0b6437fee045d6252