module ShadowController
Constants
- VERSION
Public Instance Methods
shadow_controller()
click to toggle source
# File lib/shadow_controller.rb, line 4 def shadow_controller controller = self.described_class raise_misuse if misused? controller mock controller draw_routes controller end
Private Instance Methods
actions(controller)
click to toggle source
# File lib/shadow_controller.rb, line 13 def actions(controller) controller.action_methods end
draw_routes(controller)
click to toggle source
# File lib/shadow_controller.rb, line 29 def draw_routes(controller) before do routes.draw do eval dynamic_routes(controller).join(" ") end end end
dynamic_routes(controller)
click to toggle source
# File lib/shadow_controller.rb, line 43 def dynamic_routes(controller) actions(controller).map do |action| %Q[ get "/anonymous/#{action}" post "/anonymous/#{action}" patch "/anonymous/#{action}" put "/anonymous/#{action}" delete "/anonymous/#{action}" ] end end
first_action(controller)
click to toggle source
# File lib/shadow_controller.rb, line 25 def first_action(controller) actions(controller).first end
misused?(controller)
click to toggle source
# File lib/shadow_controller.rb, line 21 def misused?(controller) controller != ApplicationController end
mock(controller)
click to toggle source
# File lib/shadow_controller.rb, line 37 def mock(controller) method = first_action(controller).to_sym controller_path = controller.instance_method(method).source_location[0] controller { eval File.read(controller_path) } end
raise_misuse()
click to toggle source
# File lib/shadow_controller.rb, line 17 def raise_misuse raise "ControllerMime is currently limited to use with ApplicationController only" end