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