LoginSignup
8
8

More than 5 years have passed since last update.

Rails:REST APIのテンプレ作成

Last updated at Posted at 2016-06-12

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

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8