RailsのCでもVでもない場所でアプリのURIを扱う方法
API を実装していく際にリンク先の URI も加えてあげたい1場合、どこかで URI を生成する必要がある。
Grape で API を書く場合、提供される機能はあくまで endpoint 周りであって、アプリの内部実装は自分でなんとかする必要がある。Grape から使えるとしたら Rails の C でも V でもない場所にせざるを得ない。ということで C でも V でもない場所で URI を扱う方法を調べてみた。
Can Rails Routing Helpers (i.e. mymodel_path(model)) be Used in Models? - Stack Overflow
ということで
Rails.application.routes.url_helpers
を include すれば使えそうだが、その際 include する人は module でなく class でないとダメ っぽい。
これは C や V で利用することを前提に url_for() ができあがっているからか、もしくは自分が独自に作った Helper が super な url_for() を呼び出している際に何かの依存を踏んでいるからかもしれない。ちょっとよく分かっていないけど少なくとも class で include されるようにしておけば安定して動くことが分かった。
[20160731 追記] こんな記事があった。ほぼ考えてることそのまんまだった。
- <a
- href=”http://postd.cc/sprinkle-some-hateoas-on-your-rails-apis/”>RailsのAPIにHATEOASを散りばめてみる
RESTの拡張、HATEOASの詳解と実装例 プログラミング POSTD</a>
HATEOASですね ↩