.cal.dat

宮里 忍 2013/06/21

ポイント

calコマンド
拡張cal
特徴
.cal.dat に国民の祝日を登録する

Problem #1

国民の祝日をどうやって.cal.datに書くか

国民の祝日をどうやって.cal.datに書くか

Solution #1

国民の祝日を自分で管理する

国民の祝日を自分で管理する
Railsでサクッと作る
認証やマスタメンテはrails_adminに任せる
APIを用意する1
module Api
  module V1
    class HolidaysController < ApplicationController
      def list
        // 祝日一覧を取得する処理

        respond_to do |format|
          format.json { render json: @holidays }
          format.xml  { render xml: @holidays }
          format.caldat { render :template => 'holidays/list' }
        end
      end
    end
  end
end
    
APIを用意する2
「format.caldat { render :template => 'holidays/list' }」とすると
APIを用意する3
「views/holidays/list.caldat.erb」を書く
<% @holidays.each do |holiday| %>
.cal.datフォーマットで出力する処理を書く
<% end %>
        
普通のerbということです。 
APIを用意する4
module Api
  module V1
    class HolidaysController < ApplicationController
      def list
        
のように書くと
APIを用意する5
APIにバージョンなしでアクセスできるようにルーティングする。 config/routes.rb
  current_api_routes = lambda do
    match "/holidays/list/:start/:end" => "holidays#list"
    match "/holidays/is_holiday/:date" => "holidays#is_holiday"
  end

  namespace :api, defaults: {format: 'json'} do
    scope :module => :v1, &current_api_routes
    #namespace :v2, &current_api_routes
    namespace :v1, &current_api_routes
    match ":api/*path", :to => redirect("/api/v1/%{path}")
  end
    
いざ!
    $ wget http://national-holiday-api.heroku.com/api/holidays/list/1948-01-01/2150-12-31.caldat -O ~/.cal.dat
    
Thank you!