require 'flatten_routes'
namespace :flatten_routes do
desc 'Convert routes.rb to not using resource style. The original routes definitions will remain as comment.' task convert: :environment do routes = FlattenRoutes::Util.routes_from_rails_application new_routes_definition = FlattenRoutes::Util.format_routes(routes) new_routes_definition = FlattenRoutes::Util.add_magic_comment(new_routes_definition.join("\n")) file_name = File.join(Rails.root, 'config', 'routes.rb') original_content = File.read(file_name) matched = FlattenRoutes::Util::ROUTES_CONTENT_PATTERN.match(original_content) exit unless matched original_routes_definition = matched[2] # delete old generated routes definition by flatten_routes original_routes_definition = FlattenRoutes::Util.delete_flatten_routes_definition(original_routes_definition) # comment out original definition original_routes_definition = original_routes_definition.split("\n").map do |line| %r{(^#|^\s*?#)}.match(line) ? line : "##{line}" end.join("\n") new_content = original_content.gsub(FlattenRoutes::Util::ROUTES_CONTENT_PATTERN, "\\1#{new_routes_definition + original_routes_definition}\\3") File.open(file_name, 'wb') { |f| f.puts(new_content) } end desc 'Annotate routes.rb' task annotate: :environment do routes = FlattenRoutes::Util.routes_from_rails_application new_routes_definition = FlattenRoutes::Util.format_routes(routes) new_routes_definition = FlattenRoutes::Util.commentize(new_routes_definition) new_routes_definition = FlattenRoutes::Util.add_magic_comment(new_routes_definition.join("\n")) file_name = File.join(Rails.root, 'config', 'routes.rb') original_content = File.read(file_name) matched = FlattenRoutes::Util::ROUTES_CONTENT_PATTERN.match(original_content) exit unless matched original_routes_definition = matched[2] # delete old generated routes definition by flatten_routes original_routes_definition = FlattenRoutes::Util.delete_flatten_routes_definition(original_routes_definition) new_content = original_content.gsub(FlattenRoutes::Util::ROUTES_CONTENT_PATTERN, "\\1#{new_routes_definition + original_routes_definition}\\3") File.open(file_name, 'wb') { |f| f.puts(new_content) } end
end