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ですね ↩
More
Recent Posts
- » PlantUMLの-pipeモードとEmacsのplantuml-mode
- » Emacs + ruby-lsp + Standardで快適コーディング
- » ものぐささんのためのTypeScriptを使いつつGASでも使えるライブラリ開発環境
- » quickjs.rbでRubyの環境からJavaScriptのロジック(I/Oのないコード)の動作結果を得る
- » kintoneからエクスポートしたCSVデータの変換ライブラリを作ってみた
- » MCPメモ
- » Mermaidの大きすぎる余白を調整する方法の一例
- » LLMアプリをLLMを使いながら作ってみた
- » Gemini Advancedでもうゲームが変わっていた
- » 今さらLLMのモデルの違いとプロンプトエンジニアリングについて