シールドを使用してOauth2サーバー(Oauth2srvと呼ばれます)を構築しようとしています。しかし、それは問題のことではありません。この例のコードでは、基本的に次のようにしています:スコープセクションの複数のモジュールのコントローラを使用する
scope "/", Shield do
pipe_through :api
get "/apps", AppController, :index
.. etcetera ..
end
シールドモジュールは依存関係にあるため、deps/shieldにあります。すべてのルートもそこにあります。 は今、私はこのような自分のモジュール内のコントローラへのルートを追加したい:
scope "/", Shield do
pipe_through :api
get "/apps", AppController, :index
get "/*", Oauth2srv.CatchallController, :catch_it
end
CatchallControllerは、Web /コントローラ/ catchall_controller.exに存在します。しかし、スコープは同じディレクトリ内のすべてのコントローラを期待しているようで、コンパイラは私にエラー:function Shield.Oauth2srv.CatchallController.init/1 is undefined
を投げます。
何をする必要がありますか?
「あなたのスコープは、同じディレクトリ内のすべてのコントローラを期待しているようです」と言ってください。それはエリクシールの仕組みではありません。エリクサーはコンパイルされた言語です。したがって、名前にかかわらず、技術的に任意のディレクトリにモジュールを置くことができます。モジュール検索の便宜のために、ディレクトリ構造をモジュール名に従わせると便利です。 –