class MiddlewareCli::ExtractMiddleware
Constants
- ACTION_DISPATCH_FLASH
Public Class Methods
constantize(middleware)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 45 def constantize(middleware) Object.const_get(middleware) end
execute(requested_path, options)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 12 def execute(requested_path, options) begin load_application rescue LoadError puts "Fail to load your application" return end if options["name"].blank? extract_all(requested_path) else extract_one(requested_path, options["name"], options["terminal"]) end end
extract_all(path)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 61 def extract_all(path) middleware_list do | middleware, _| perform(middleware, path) end render_disclaimer(path) end
extract_one(path, middleware_name, terminal_output)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 68 def extract_one(path, middleware_name, terminal_output) if middleware_name.blank? puts "Please enter any middleware name" elsif filtered_list.find { |name| name == middleware_name} perform(middleware_name, path, terminal_output) render_disclaimer(path) unless terminal_output else puts "Middleware not found :(" end end
find(middleware)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 26 def find(middleware) file_path, _ = begin find_source(middleware) rescue StandardError => error [error.backtrace_locations.first.to_s.match(/:\d*:in/).pre_match, nil] end raise InvalidMiddlewarePath if file_path.include?("lib/middleware/helper/extract_middleware") [file_path, namespace_to_path(middleware)] end
find_source(middleware_name)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 36 def find_source(middleware_name) middleware = if is_route_middleware?(middleware_name) constantize(middleware_name.match('.routes').pre_match).routes else constantize(middleware_name).send(*init_with(middleware_name)) end middleware.method(:call).source_location end
init_with(middleware)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 49 def init_with(middleware) middleware == ACTION_DISPATCH_FLASH ? ['new'] : ['new', OpenStruct.new] end
namespace_to_path(middleware)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 53 def namespace_to_path(middleware) middleware.split(/\W+/).map(&:underscore).join("/") end
perform(middleware, requested_path, terminal_output = false)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 79 def perform(middleware, requested_path, terminal_output = false) begin path, folder = find(middleware) if terminal_output puts `cat #{path}` else copy_file(path, relative_app_path(requested_path, folder)) end rescue StandardError => e return end end
render_disclaimer(path)
click to toggle source
# File lib/middleware-cli/extract_middleware.rb, line 57 def render_disclaimer(path) puts "Find your middlewares at '\\#{path}' :)" end