Rails: Doorkeeperでのログイン処理中に起きたエラーをJSONで出力

Doorkeeperでログイン中にエラーが発生すると、Doorkeeper::TokensControllerの中でエラーが起きるので、ApplicationController

  • use_doorkeeperの中でdoorkeeperの処理に使うcontrollerを指定できる
  • Doorkeeper::TokensControllerはActionController::Metalを継承しているので、renderを実行するのに必要なmoduleをincludeする必要がある
  • /config/routes.rb

    MyAppServer::Application.routes.draw do
      use_doorkeeper do
        controllers tokens: 'tokens'
      end
    
      resources :books
      resources :users
    end
    

    /app/controllers/tokens_controller.rb

    class TokensController 
    	

    middlemanのFrontmatterで変数を使う

    Frontmatterで呼び出し元のテンプレートに変数を渡すことができる。

    layout.haml
    !!!
    %html
      %head
        %meta(charset="utf-8")
        %title= current_page.data.title
    %body
      = yield
    
    index.html.haml
    ---
    title: akiroom.com
    ---
    
    %p something.
    

    この時、index.htmlにアクセスすると、titleタグの中身は「akiroom.com」になっている。
    この変数にさらに「title: #{hoge_var}」というような感じでさらに変数を呼び出したいと思った。
    その時どうすればいいか。

    続きを読む middlemanのFrontmatterで変数を使う

    AXRatingViewをアップデート(64bit対応など)

    AXRatingViewを0.9.4から0.9.5にアップデートしました。
    関連: 星でレーティングするAXRatingViewをつくった
    CocoaPodsに対応しているので以下をPodfileに書けば動きます。

    pod 'AXRatingView', '~> 0.9.5'
    

    AXRatingView0.9.5

    アップデート内容は以下の通り。
    続きを読む AXRatingViewをアップデート(64bit対応など)

    MKMapViewを3D表示する

    代官山上空200mから渋谷駅を望む

    [MKMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]を使うことで、どの地点からどの地点に向かって上空何メートルからの視点で見下ろすかを定義できる。その後、MKMapViewのcameraとshowsBuildingsプロパティを設定することで、ビルを3D表示させることができる。iOSシミュレーターでは立体表示にならないので注意。

      // Shibuya Sta.
      CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(35.658517, 139.701334);
      
      // Daikanyama Sta.
      CLLocationCoordinate2D fromEyeCoordinate = CLLocationCoordinate2DMake(35.648104, 139.703168);
      
      // 200 meter
      CLLocationDistance eyeAltitude = 200.0;
      
      MKMapCamera *camera = [MKMapCamera cameraLookingAtCenterCoordinate:centerCoordinate
                                                       fromEyeCoordinate:fromEyeCoordinate
                                                             eyeAltitude:eyeAltitude];
      [self.mapView setCamera:camera];
      [self.mapView setShowsBuildings:YES];
    

    Objective-Cのブロックを変数に入れて呼び出す

    Objective-Cのあるひとつのメソッド内のあちこちで実行される処理があるような時に、ブロックを変数に入れて何ヶ所かで呼び出したい時がある。書き方をよく忘れるので、Objective-CでBlockを変数に入れる方法の具体例を挙げる。

    続きを読む Objective-Cのブロックを変数に入れて呼び出す

    星でレーティングするAXRatingViewをつくった

    AXRatingViewプレビュー

    https://github.com/akiroom/AXRatingView

    iOSアプリを作っていて星をタップしてレーティングできるビューが欲しかったのですが、フラットデザインっぽい感じで色々設定できるようなライブラリが見つからなかったので、自分で作りました。上のスクリーンショットを見ていただければ分かる通り、以下のような特長があります。

    • 漸次的/段階的なレーティング
    • 自由な文字を設定できる
    • 自由な画像を設定できる
    • editable/non-editableの切り替えが可能
    • 星の数を増減できる
    • addTarget:action:forControlEvents:で簡単に変更の通知イベントを割り当てられる
    • ★マークのような画像リソースの用意が不要

    ソースコードのダウンロードは以下のURLからできます。

    https://github.com/akiroom/AXRatingView

    既にcocoapodsに登録済みなので、Podfileに次のように書いてpod installすればすぐに使えます。

    pod 'AXRatingView', '~> 0.9.4'
    

    Rubyで浮動小数点数の加算減算がずれないようにする

    問題

    Rubyで0.1を足していくと、計算結果がずれるという問題が起きた。例えば、以下のようなコードを書くと、期待しているような計算結果が得られない。

    > tmp = 0.0
     => 0.0
    > 1..10.times { p tmp += 0.1 }
    0.1
    0.2
    0.30000000000000004
    0.4
    0.5
    0.6
    0.7
    0.7999999999999999
    0.8999999999999999
    0.9999999999999999
     => 1..10
    

    続きを読む Rubyで浮動小数点数の加算減算がずれないようにする

    Excelですぐ開けるUnicodeなCSVをRubyで生成する

    Excelで開ける、Unicode文字列を含むCSVファイルを生成する方法。Microsoft Excel for Mac 2011で開けることを確認した。

    Excelで開けるUnicode文書を作るポイントは以下の2点。

    UTF-16 LE with BOMで保存する
    UTF-8は文字化けして、UTF-16 BEはフリーズした
    タブ区切りで保存する
    カンマを使う場合はテキストファイルウィザードを使わなければならない

    続きを読む Excelですぐ開けるUnicodeなCSVをRubyで生成する