LoginSignup
1
1

More than 1 year has passed since last update.

[Rails] routesのnamespaceとget ... to: の意味

Last updated at Posted at 2021-06-25

namespace

namespace: hoge で名前空間を付与することができます。これはコントローラーをグルーピングし、またURLにもその情報を付与することを意味します。

routes.rb
  namespace :api do
    namespace :v1 do
      ...
    end
    namespace :v2 do
      ...
    end
  end

例えばこのようにnamespaceは複数配置することもできるため、api/v1/fuga_controller.rbapi/v2/fuga_controller.rbを分類することもできます。

名前空間(namespace)

名前空間とは、各要素に一意の異なる名前をつけなければ識別できない範囲のこと。
また、名前の集合全体を小さな空間に区切り、それぞれに異なる識別名を与えることで、
その空間内では他の空間に含まれる名前の競合・衝突を意識しなくて良いようにしたもの。

get ... to:

特定のリソースに対するルーティングを生成する方法は
resources、resourceだけではありません。それが以下の書き方です。

routes.rb
 get 'hoge/fuga', to: 'hoge#hoge_fuga'

これはつまり、「'hoge/fuga'というURLに対してGETリクエストがきたら、hoge_controller.rbのhoge_fugaメソッドを呼ぶ」ということを意味します。

resources :hogeとの違いは、アプリケーション独自のルーティングとコントローラー、
そのアクションに対応させられるという点です。

一長一短ですが、「原則はresources、resourceで書く、例外的に必要であればget ... to:も許容する」というルールがいいかと思います。後者は自由度が高い一方で、コード量は増えますし、またその量に応じて管理も大変です。

ShellScript

shell

shellとはLinuxカーネル(OSの中核)と私達ユーザーとのコミュニケーションの間に立つ、
要は「OSとの対話用インターフェース」とも言えるものです。このshellがなければ、私たちがどれだけ操作を実行したとしてもカーネルには届きません。

そして、このshellが理解することのできるスクリプト言語こそがShellScriptです。つまり、コンピューターに対して実行させたい処理をこのShellScriptを用いて命令することができるわけです。


ちなみに、わざわざShellScriptを書かなくても複数のコマンドを駆使することで、複雑な処理を命令することもできます。例えばgrepやcut、そしてこれらのコマンドをつなぐ|(パイプ)などを組み合わせます。このようなこともできます。

sh
# 出力されたrouts一覧から、'order'が含まれる一行のみを出力する
$ rails routes | grep order

|(パイプ)はその左側の標準出力(そのコマンドによって出力される文字列、数値など)を、
パイプの右側に渡すことができます。また、grep(グレップ)はファイルやディレクトリ、
または標準入力の中から、特定の文字列を含む行を出力します。つまり、この場合、rails routesで全てのルーティングが標準出力され、|を通して右側に渡され、最終的にgrepでorderに合致する行が出力されるという流れです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1