Class: RailsBestPractices::Core::Route

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_best_practices/core/routes.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(namespaces, controller_name, action_name) ⇒ Route

Returns a new instance of Route.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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

Instance Attribute Details

#action_nameObject (readonly)

Returns the value of attribute action_name.



19
20
21
# File 'lib/rails_best_practices/core/routes.rb', line 19

def action_name
  @action_name
end

#controller_nameObject (readonly)

Returns the value of attribute controller_name.



19
20
21
# File 'lib/rails_best_practices/core/routes.rb', line 19

def controller_name
  @controller_name
end

#namespacesObject (readonly)

Returns the value of attribute namespaces.



19
20
21
# File 'lib/rails_best_practices/core/routes.rb', line 19

def namespaces
  @namespaces
end

Instance Method Details

#controller_name_with_namespacesObject



39
40
41
42
43
44
45
# 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_sObject



47
48
49
# File 'lib/rails_best_practices/core/routes.rb', line 47

def to_s
  "#{controller_name_with_namespaces}\##{action_name}"
end