【Rails】 APIのURLにつける「V1」の意味とは?
http://localhost:3000/api/v1/hoge
のように、v1などの数字を付ける場合が多い。
現在ジョインしている案件でもURLに付けているが、これまでそういう物としか考えずに詮索しなかったが、
気になって調べてみた。
APIは開発の時点で頻繁に仕様変更があるため、v1, v2などスイッチングしやすくするためにURLに付けるのだそう。
Railsの場合、
namespace :api do namespace :v1 do ... end end
のように、namespaceを用いることでURLに情報を付与できる。
つまり、v1からv2にして機能更新したい時など、柔軟性を持たせることができる。
小ネタ的ではあるが、意味を持たない事象は存在しないことを改めて学んだ。
【Rails】Pretty Print(PP)を利用したデバッグ 【API】
実務に於いて、先輩から「PP」をコード内に仕込み、デバッグする方法を教わった。
RailsでAPIを叩いた際、エラーが発生してもどこを直せばよいか分からないことが多いかと思う。
そこで役に立つのが、
pp
で、まずは表示されているエラー文からある程度の目処を付ける。
目処を付けたmethodの処理内で、
例えば
def index @user = User.all pp @user # pp "aiueo" end
のように、pp 変数名、pp "文字"を変数の後ろに入れてAPIを叩くと
dockerを利用している場合、正常に実装できている場合はdocker-compose upしているターミナルに文字がプリントされる。
つまり、pp文が通らなかった場合(無反応の場合)、その直前のコードがおかしいことになる。
ppをこまめに利用することで、エラー源を特定しやすくなる。
実務において非常に役立つので、これからもどんどん使っていきたいと思う。
Rails(API), Docker利用時、gemを追加した際のコマンド
Docker環境においてRails APIでgemを追加した際のコマンドを忘れがちなのでメモとして残す。
まずはdevelopブランチにおいてgit pullして最新のgitを反映させる。
そして以下のdocker-composeコマンドでgemのupdateなどを行う。
docker-compose run --rm api bundle update docker-compose run --rm api bundle install docker-compose build api docker-compose up
自分以外の操作によってgemが追加される場合があるので、定期的に行うとよい。
class << self について
通常、モデル内(class)にdef~という形で書くと、 それはインスタンスメソッドとなる。インスタンスメソッドはそのモデル内で使用できる。
ではモデル内でよく見る「class << self」とは何か?
class << self def クラスメソッド end end
上記のような場合、 class<<selfからend内に書かれたメソッドはクラスメソッドとなる。
クラスメソッドとして定義したい場合、他に
def self.メソッド end
のように、メソッドの前にself.を書く方法がある。 両者とも効果は同じだが、何度もクラスメソッドを書く場合は、前者のように一段ネストした方がよい。
Rubyスタイルガイドでは、後者のようにself.メソッドという書き方が推奨されている・・・が、状況に応じて選べばいいのではないかと思った。
Docker で不具合があった場合の対処
このブログではRailsの実務におけるエラーや技術のことなどを備忘録的に記していきます!
業務でdocker を利用していて偶に各種エラーに遭遇するが、その場合はエラー内容にもよるがDockerを再起動するなどで直る場合が多い。
Docker (右上の鯨)を終了させる。リスタートではなく、一度終了させてから起動させる。
dockerコマンドで不要なキャッシュなどの削除を行う
未使用のvolumeを一括削除
docker volume prune
未使用のimageを一括削除
docker image prune
未使用のcontainerを一括削除
docker container prune
未使用のnetworkを一括削除
docker network prune
停止コンテナ、未使用Volume、未使用network、未使用Imageを削除
docker system prune