Sha256: e7a094d1ed558889efd1990f459a434954ce59c7215de7bdb70c8118cd546980

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

require 'route_dog/middleware'
require 'route_dog/report'
require 'route_dog/railtie' if defined?(Rails)

module RouteDog
  def self.config_file
    File.join(Rails.root, 'config', 'middlewares_route_dog.yml')
  end

  def self.watched_routes_file
    File.join(Rails.root, 'tmp', 'route_dog_routes.yml')
  end

  def self.load_watched_routes
    YAML.load_file(watched_routes_file)
  rescue Errno::ENOENT
    {}
  end

  def self.write_watched_routes(routes)
    File.open(watched_routes_file, "w+") {|file| file.puts(routes.to_yaml) }
  end

  def self.delete_watched_routes_file
    File.delete(watched_routes_file) if File.exists?(watched_routes_file)
  end

  # When method.nil? it respond to all methods.
  def self.route_tested_with_requirements?(controller, action, method)
    begin
      available_methods = load_watched_routes[controller.to_s.downcase][action.to_s.downcase]
      method.nil? ? available_methods.any? : available_methods.include?(method.to_s.downcase)
    rescue
      false
    end
  end

  def self.route_tested?(route)
    requirements = route.requirements
    route_tested_with_requirements?(requirements[:controller], requirements[:action], route.verb)
  end

  def self.constantize_controller_str(controller)
    controller.split("/").map{|c| c.split("_").map{|cc| cc.capitalize}.join }.join("::").concat("Controller").constantize
  end

  def self.action_string_for_route(route)
    "#{route.requirements[:controller]}##{route.requirements[:action]}"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
route_dog-2.5.1 lib/route_dog.rb
route_dog-2.5.0 lib/route_dog.rb