module RackConsole::AppHelpers
Public Instance Methods
capture_stdio!() { || ... }
click to toggle source
# File lib/rack_console/app_helpers.rb, line 87 def capture_stdio! @captured_stdio = true _stdin, _stdout, _stderr = $stdin, $stdout, $stderr $stdin, $stdout, $stderr = @stdin, @stdout, @stderr begin yield ensure $stdin, $stdout, $stderr = _stdin, _stdout, _stderr end end
console!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 21 def console! haml :console, locals: locals, layout: layout end
const_get_safe(m, name)
click to toggle source
# File lib/rack_console/app_helpers.rb, line 145 def const_get_safe m, name m.const_get(name) rescue Object "ERROR: #{$!.inspect}" end
eval_expr(et, expr)
click to toggle source
# File lib/rack_console/app_helpers.rb, line 45 def eval_expr et, expr expr_str = "begin; #{@expr} \n; end" case et when nil, false eval(expr_str) when Module et.module_eval(expr_str) else et.instance_eval(expr_str) end end
evaluate_expr!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 25 def evaluate_expr! return if @result_evaled result_capture! do @stdin = StringIO.new('') @stdout = StringIO.new('') @stderr = StringIO.new('') @result_ok = false @expr = (params[:expr] || '').strip unless @expr.blank? @result_evaled = true Timeout.timeout(config[:eval_timeout] || 120) do capture_stdio! do @result = eval_expr(eval_target, @expr) @result_ok = true end end end end end
evaluate_method!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 68 def evaluate_method! evaluate_expr! @show_stdio = @show_result = false if @result_ok && @result.is_a?(Module) result_capture! do @module = @result @method_name = params[:name] @method_kind = params[:kind].to_s =~ /i/ ? :instance_method : :method @method = @module.send(@method_kind, @method_name) rescue nil unless @method @method = @module.send(:method, @method_name) @method_kind = :method end @result = @method expr_for_object! @method, @module, @method_kind end end end
evaluate_methods!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 98 def evaluate_methods! @methods = nil result_capture! do @methods = methods_matching(params) end end
evaluate_module!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 57 def evaluate_module! evaluate_expr! @show_stdio = @show_result = false if @result_ok && @result.is_a?(Module) result_capture! do @module = @result expr_for_object! @module end end end
prepare_file!()
click to toggle source
# File lib/rack_console/app_helpers.rb, line 105 def prepare_file! path = params[:splat][0] file, line = href_to_file_line(path) result_capture! do unless has_file_access? file content_type 'text/plain' return "NOT A LOADABLE FILE" end @source_file = SourceFile.new([ file, line ]).load! end end
result_capture!() { || ... }
click to toggle source
# File lib/rack_console/app_helpers.rb, line 117 def result_capture! @result_ok = false result = yield @result_ok = true result rescue @error = $! @error_description = @error.inspect ensure @result_extended = @result.singleton_class.included_modules rescue nil @result_class = @result.class.name if @is_module = (::Module === @result) @module = @result @ancestors = @module.ancestors.drop(1) if @is_class = (::Class === @module) @superclass = @module.superclass @subclasses = @module.subclasses.sort_by{|c| c.name || ''} end @constants = @module.constants(false).sort.map{|n| [ n, const_get_safe(@module, n) ]} @methods = methods_for_module(@module) end if @is_method = (::Method === @result || ::UnboundMethod === @result || MockMethod === @result) @method = @result @method_source_location = @method.source_location @method_source = @method_source_location && SourceFile.new(@method_source_location).load!.narrow_to_block! end end
with_access() { || ... }
click to toggle source
# File lib/rack_console/app_helpers.rb, line 13 def with_access if has_console_access? yield else raise Error, "not authorized" end end