Open7
goaのDSL内でFiles()を記述したとき、genとexampleの結果で食い違いが出てエラーになる
design.go
var _ = Service("bottle", func() {
Files("/index.json", "/www/data/index.json", func() {
Description("Serve home page.")
Docs(func() {
Description("Additional documentation")
URL("https://goa.design")
})
})
})
としたとき、
Not enough arguments in call to 'bottlesvr.New'
とエラーがでる。
これはfileSystemGenHTTPIndexJSONというhttp.FileSystemの引数をexample側が取る状態で生成されないことが原因
example/http.go
#...etc
bottleServer = bottlesvr.New(bottleEndpoints, mux, dec, enc, eh, nil)
gen/http/bottle/server/server.go
func New(
e *health.Endpoints,
mux goahttp.Muxer,
decoder func(*http.Request) goahttp.Decoder,
encoder func(context.Context, http.ResponseWriter) goahttp.Encoder,
errhandler func(context.Context, http.ResponseWriter, error),
formatter func(ctx context.Context, err error) goahttp.Statuser,
fileSystemGenHTTPIndexJSON http.FileSystem,
) *Server {
手動でかけ、ってことかな…?
いやまさかそんなわけ無いと思って、簡単なテストリポジトリ切って試したらそんなことなくて、ちゃんとexampleでhttp.goの引数は噛み合ってた
なんでやん
自社のコード自体は、複数Filesをサーブしていないので、おそらく今回は該当しない…?
テストリポジトリで見てみたが、確かに複数Filesが一個のServiceにあると引数が足らなくなる
が、しかし自社は一個しかFIlesおいてないんだよな…
取り敢えず一旦、goaのリポジトリを眺めてみる