Rails で作成した Web アプリと iPhone アプリとの連携を行おうとあれこれ試す中で、grape を用いて少しハマった。そのことについて書いていこうと思う。
Rails と iOS の連携について
Rails と iOS で連携するには、基本的には Rails 側のデータを API化して、HTTPリクエストで扱える状態にした上で、iOS側でも適切なライブラリを導入し、それらのデータを扱えるようにすればいいだけの話である。そして、今回はその第一段階として、すでに作成済みの Web アプリにおいて、データの API化 を grape という gem を用いて試してみた。ところが、かなり小さいところではまってしまったので、これから grape を使う人のために記録しておこうと思う。(本当に小さな点なので、この記事が読まれる頃には改善されている可能性がある。)
grape の使い方について
grape 自体の使い方については、公式リファレンスか、あるいは、こちらの記事やこちらの記事に詳しい。ので、実際の使い方はこれらの記事を参考にしてほしい。しかし、この通りに作成し、api 以下にアクセスしたところ、` uninitialized constant API (NameError)`というエラーを受け取ってしまった。どうやらルーティングがまずいらしい。ということで調べたところ、このような記事を見つけた。この記事によれば、grape の公式ドキュメントにあるように、Rails は api ディレクトリの中のモジュール名のついたディレクトリ配下のファイルを探すらしく、そのため、ディレクトリ構造としては、app/api/api.rb
ではなく、app/api/api/api.rb
が正しい、ということらしい。確かにこうすると問題は解決した。
ただ、まだ理解が甘いところがある上、こうして書いてみても、自分で「本当か?」と思ってしまう説明ではあるので、また改めて理解が進めば加筆・修正していきたいと思う。ご指摘などいただければ幸いです。