class RailsBestPractices::Core::Route

Attributes

action_name[R]
controller_name[R]
namespaces[R]

Public Class Methods

new(namespaces, controller_name, action_name) click to toggle source
# File lib/rails_best_practices/core/routes.rb, line 21
def initialize(namespaces, controller_name, action_name)
  @namespaces = namespaces

  # mappings can be specified by e.g.
  #   post 'some/:pattern' => 'controller#action'
  if action_name.is_a?(String) && action_name =~ /\A(\w+)#(\w+)\z/
    controller_name = Regexp.last_match(1)
    action_name = Regexp.last_match(2)
  end

  if controller_name
    entities = controller_name.split('/')
    @namespaces += entities[0..-2] if entities.size > 1
    @controller_name = entities.last
  end
  @action_name = action_name
end

Public Instance Methods

controller_name_with_namespaces() click to toggle source
# File lib/rails_best_practices/core/routes.rb, line 39
def controller_name_with_namespaces
  if controller_name
    namespaces.map { |namespace| "#{namespace.camelize}::" }.join('') + "#{controller_name.camelize}Controller"
  else
    namespaces.map(&:camelize).join('::') + 'Controller'
  end
end
to_s() click to toggle source
# File lib/rails_best_practices/core/routes.rb, line 47
def to_s
  "#{controller_name_with_namespaces}\##{action_name}"
end