フェニックスの小さなCGIコントローラー。
mix.exsのdepsにPhoenixCGI追加します:
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end次に、それが本当に重要ですendpoint.exで、 plug Plug.Parsersに次のbody_readerを追加します。
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...これにより、リクエストの本体がプライベートフィールドに保存され、CGIスクリプトに渡すことができます。
その後、 PhoenixCGI任意のコントローラーとして使用できます。たとえば、A /git/でgit-http-backendを提供する場合は/opt/git/repos/ですべてのリポジトリを提供する場合は、次のようにセットアップできます。
match :* , "/git/*path" , PhoenixCGI ,
binary: "/usr/lib/git-core/git-http-backend" ,
extra_env: % {
GIT_PROJECT_ROOT: "/opt/git/repos/" ,
GIT_HTTP_EXPORT_ALL: "1"
}たとえば、 assign/3で提供するプロジェクトを定義するプラグを定義することもできます。
defp set_repo ( conn ) do
assign ( conn , :extra_env , % {
GIT_PROJECT_ROOT: "/opt/git/repos/demo.git" ,
GIT_HTTP_EXPORT_ALL: "1"
} )
endそしてそれを使用します
pipeline :git do
plug :set_repo
end
scope "/" do
pipe_through :git
match :* , "/git/*path" , PhoenixCGI ,
binary: "/usr/lib/git-core/git-http-backend"
end ドキュメントはHexdocsで入手できます。
Copyright(c)2020 David Baumgartner
このプログラムはフリーソフトウェアです。FreeSoftware Foundationが公開しているGNU General Publicライセンスの条件、ライセンスのバージョン3、または(オプションで)後のバージョンのいずれかで公開されているように、それを再配布したり、変更したりできます。
このプログラムは、それが有用であることを期待して配布されますが、保証はありません。商品性や特定の目的に対するフィットネスの暗黙の保証さえありません。詳細については、GNU一般公開ライセンスを参照してください。
このプログラムとともに、GNU一般公開ライセンスのコピーを受け取る必要があります。そうでない場合は、http://www.gnu.org/licenses/を参照してください。
Githubを通じてプルリクエストを喜んで受け入れます。