class OscMacheteRails::ResourceRouteGenerator
Public Instance Methods
add_workflow_route()
click to toggle source
Properly nests namespaces passed into a generator
$ rails generate osc_machete_rails:workflow_route admin/users/products
should give you
namespace :admin do namespace :users resources :products do member do put 'submit' put 'copy' end end end end
# File lib/generators/osc_machete_rails/resource_route/resource_route_generator.rb, line 20 def add_workflow_route return if options[:actions].present? # iterates over all namespaces and opens up blocks regular_class_path.each_with_index do |namespace, index| write("namespace :#{namespace} do", index + 1) end # inserts the primary resource write("resources :#{file_name.pluralize} do", route_length + 1) write("member do", route_length + 2) write("put 'submit'", route_length + 3) write("put 'copy'", route_length + 3) write("end", route_length + 2) write("end", route_length + 1) # ends blocks regular_class_path.each_index do |index| write("end", route_length - index) end # route prepends two spaces onto the front of the string that is passed, this corrects that route route_string[2..-1] end
Private Instance Methods
route_length()
click to toggle source
# File lib/generators/osc_machete_rails/resource_route/resource_route_generator.rb, line 54 def route_length regular_class_path.length end
route_string()
click to toggle source
# File lib/generators/osc_machete_rails/resource_route/resource_route_generator.rb, line 46 def route_string @route_string ||= "" end
write(str, indent)
click to toggle source
# File lib/generators/osc_machete_rails/resource_route/resource_route_generator.rb, line 50 def write(str, indent) route_string << "#{" " * indent}#{str}\n" end