Class: Releaf::Root::DefaultControllerResolver

Inherits:
Object
  • Object
show all
Includes:
Service
Defined in:
lib/releaf/root/default_controller_resolver.rb

Instance Method Summary collapse

Instance Method Details

#callObject



6
7
8
9
10
11
12
13
# File 'lib/releaf/root/default_controller_resolver.rb', line 6

def call
  controllers.each do |controller_name|
    path = controller_index_path(controller_name)
    return path if path
  end

  nil
end

#controller_index_path(controller_name) ⇒ Object



15
16
17
18
19
# File 'lib/releaf/root/default_controller_resolver.rb', line 15

def controller_index_path(controller_name)
  route_options = {controller: controller_name, action: "index"}

  subdomain.present? && route_path(route_options.merge(subdomain: subdomain)) || route_path(route_options)
end

#controllersObject



25
26
27
# File 'lib/releaf/root/default_controller_resolver.rb', line 25

def controllers
  Releaf.application.config.available_controllers
end

#route_exists?(route_options) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/releaf/root/default_controller_resolver.rb', line 29

def route_exists?(route_options)
  Rails.application.routes.routes.map(&:defaults).include?(route_options)
end

#route_path(route_options) ⇒ Object



21
22
23
# File 'lib/releaf/root/default_controller_resolver.rb', line 21

def route_path(route_options)
  Rails.application.routes.url_helpers.url_for(route_options.merge(only_path: true)) if route_exists?(route_options)
end

#subdomainObject



33
34
35
# File 'lib/releaf/root/default_controller_resolver.rb', line 33

def subdomain
  current_controller.request.subdomain
end