lib/hanami/cli/generators/app/action.rb in hanami-cli-2.0.0.beta2 vs lib/hanami/cli/generators/app/action.rb in hanami-cli-2.0.0.beta3

- old
+ new

@@ -40,20 +40,23 @@ "destroy" => "delete" }.freeze private_constant :ROUTE_RESTFUL_HTTP_METHODS ROUTE_RESTFUL_URL_SUFFIXES = { - "index" => "", - "new" => "/new", - "create" => "", - "edit" => "/:id/edit", - "update" => "/:id", - "show" => "/:id", - "destroy" => "/:id" + "index" => [], + "new" => ["new"], + "create" => [], + "edit" => [":id", "edit"], + "update" => [":id"], + "show" => [":id"], + "destroy" => [":id"] }.freeze private_constant :ROUTE_RESTFUL_URL_SUFFIXES + PATH_SEPARATOR = "/" + private_constant :PATH_SEPARATOR + attr_reader :fs attr_reader :inflector def generate_for_slice(controller, action, url, http, _format, _skip_view, slice, context) @@ -79,13 +82,13 @@ # end end end def generate_for_app(controller, action, url, http, _format, _skip_view, context) - fs.inject_line_at_block_bottom( + fs.inject_line_at_class_bottom( fs.join("config", "routes.rb"), - /define/, + "class Routes", route(controller, action, url, http) ) fs.mkdir(directory = fs.join("app", "actions", controller)) fs.write(fs.join(directory, "#{action}.rb"), t("action.erb", context)) @@ -118,10 +121,13 @@ end alias_method :t, :template def route_url(controller, action, url) - CLI::URL.call(url || ("/#{controller.join('/')}" + ROUTE_RESTFUL_URL_SUFFIXES.fetch(action))) + action = ROUTE_RESTFUL_URL_SUFFIXES.fetch(action) { [action] } + url ||= "#{PATH_SEPARATOR}#{(controller + action).join(PATH_SEPARATOR)}" + + CLI::URL.call(url) end def route_http(action, http) result = (http ||= ROUTE_RESTFUL_HTTP_METHODS.fetch(action, ROUTE_DEFAULT_HTTP_METHOD)).downcase