3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails 名前空間のディレクトリ構造について疑問に思ったことがあったので確認してみた

Posted at

はじめに

Ruby onRails6 実践ガイドを学習している中、名前空間のディレクトリ構造についてふと疑問に思い動作確認をしてみました。

結論

先に結論を記載します。
疑問に思ったこと、試したことを見る必要のない方はこちらのみ確認していただければと思います。

app/任意のフォルダ名/namespaseで設定したフォルダ/対象ファイル

このようにappフォルダ直下に任意の名前のフォルダを作成し、routes.rbの名前空間で
設定した名称のフォルダの直下のファイルを置くことで、処理を呼べるようです。

例)routes.rb

routes.rb
  constraints host: config[:admin][:host] do
    namespace :admin, path: config[:admin][:path] do
      root "top#index"
      get "login" => "sessions#new", as: :login

      resource :session, only: [ :create, :destroy ]

      resources :staff_members
    end
  end

app/services/admin/authenticator.rb

疑問に思ったこと

Railsガイドの2.6 コントローラの名前空間とルーティング
このように記載されておりました。

コントローラを名前空間によってグループ化することもできます。最もよく使われる名前空間といえば、多数の管理用コントローラ群をまとめるAdmin::名前空間でしょう。これらのコントローラをapp/controllers/adminディレクトリに配置し、ルーティングでこれらをグループ化できます。
・appフォルダ直下にsampleディレクトリを作成する

であれば、controllers出なくてもapp/フォルダ名/名前空間で設定したフォルダ名の直下に
ファイルをおけばいけるのでは?
と考えました。

試したこと1

'app/samples/admin/hello.rb'を作成します。

hello.rb
class Admin::Hello
  def hello
    puts "Hello World"
  end
end

適当なRailsアプリケーションにこちらのファイルを呼び出すよう実装して実行してみた結果
スクリーンショット 2020-05-01 21.07.17.png

当初の予定通り呼び出すことができました。

試したこと2

'app/samples/samples/admin/hi.rb'を作成します。

hi.rb
class Admin::Hi
  def hi
    puts "Hi World"
  end
end

適当なRailsアプリケーションにこちらのファイルを呼び出すよう実装して実行してみた結果
スクリーンショット 2020-05-01 21.14.21.png
こちらは読み込みに失敗しました。

以上の結果から、appフォルダ直下に任意の名前のフォルダを作成し、routes.rbの名前空間で
設定した名称のフォルダの直下のファイルを置くことで、処理を呼ぶことがわかりました。

参考URL

Railsガイド

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?