«前の日記(2014-03-03) 最新 次の日記(2014-03-06)» 編集

いがいが日記


2014-03-05 [長年日記]

_ versioncake gem

APIを提供するアプリをRailsで作るので、APIバージョン管理に versioncake gem を使ってみることにした。(@hsbt さんに教えてもらった。thanks!)バージョンごとに json view ファイルを分割できるので便利。gemを使うほどかなー、とも思ったけど、どのくらい便利か試しに使ってみる。Rails4.1RC1で動作確認済。

早わかり

  • こんなURLでアクセスできるようになる(他にもパラメータでバージョン指定したりもできる)

  • view 以下にこのようにファイルを置いていく。アクセスされたAPIバージョンview がない場合、自動で最近のものを使う。(=viewが変更なければ変更不要)

    • app/views/api/dummy/index.json.v1.jbuilder
    • app/views/api/dummy/index.json.v2.jbuilder
  • controller は /api 以下に入れて、Api モジュールの中に入れるようにした

    • 例: app/controllers/api/dummy_controller.rb , class Api::DummyController < ApplicationController
  • controller でアクセスされたバージョンを知るには derived_version を使う

Rails.logger.info "upper version v3!" if derived_version >= 3
  • routes
# for versioncake gem
namespace :api do
  scope 'v:api_version' do # Example: /v1/
    get '/dummy/dummy' => 'dummy#index'
  end
end

controller の中でAPIものはまとめてApiモジュールの中に入れるためにnamespace :api にしている。

  • config/application.rb
module Appname
  class Application < Rails::Application
    # versioncake gem setting
    config.versioncake.extraction_strategy = :path_parameter # /api/v1/ のようにバージョン情報をパスに入れる設定
    config.versioncake.supported_version_numbers = (1...4) # 古いAPIバージョンを制限する場合などに使う

«前の日記(2014-03-03) 最新 次の日記(2014-03-06)» 編集