| Class | BiorubyController |
| In: |
lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb
|
| Parent: | ApplicationController |
| HIDE_METHODS | = | Object.methods + [ "singleton_method_added" ] |
| HIDE_MODULES | = | [ Base64::Deprecated, Base64, PP::ObjectMixin, Bio::Shell, ] |
| HIDE_VARIABLES | = | [ "_", "irb", "_erbout", ] |
| SECURITY_NOTICE | = | "For security purposes, this functionality is only available to local requests." |
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 135
135: def commands
136: @bioruby_commands = Bio::Shell.private_instance_methods.sort
137: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 22
22: def evaluate
23: if local_request?
24: begin
25: @script = params[:script].strip
26:
27: # write out to history
28: Bio::Shell.store_history(@script)
29:
30: # evaluate ruby script
31: @result = eval(@script, Bio::Shell.cache[:binding])
32:
33: # *TODO* need to handle with output of print/puts/p/pp etc. here
34: @output = nil
35: rescue
36: @result = $!
37: @output = nil
38: end
39: else
40: @result = SECURITY_NOTICE
41: @output = nil
42: end
43:
44: @number = Bio::Shell.cache[:results].store(@script, @result, @output)
45:
46: render :update do |page|
47: render_log(page)
48: end
49: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 139
139: def history
140: @history = File.readlines(Bio::Shell.history_file)
141: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 16
16: def index
17: unless local_request?
18: flash[:notice] = SECURITY_NOTICE
19: end
20: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 64
64: def list_classes
65: number = params[:number].to_i
66:
67: script, result, output = Bio::Shell.cache[:results].restore(number)
68: class_name = result.class
69: @class = class_name
70: @classes = []
71: loop do
72: @classes.unshift(class_name)
73: if class_name == Object
74: break
75: else
76: class_name = class_name.superclass
77: end
78: end
79:
80: render :update do |page|
81: page.replace_html "classes_#{number}", :partial => "classes"
82: page.visual_effect :toggle_blind, "classes_#{number}", :duration => 0.5
83: end
84: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 51
51: def list_methods
52: number = params[:number].to_i
53:
54: script, result, output = Bio::Shell.cache[:results].restore(number)
55: @class = result.class
56: @methods = (result.methods - HIDE_METHODS).sort
57:
58: render :update do |page|
59: page.replace_html "methods_#{number}", :partial => "methods"
60: page.visual_effect :toggle_blind, "methods_#{number}", :duration => 0.5
61: end
62: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 86
86: def list_modules
87: number = params[:number].to_i
88:
89: script, result, output = Bio::Shell.cache[:results].restore(number)
90: @class = result.class
91: @modules = result.class.included_modules - HIDE_MODULES
92:
93: render :update do |page|
94: page.replace_html "modules_#{number}", :partial => "modules"
95: page.visual_effect :toggle_blind, "modules_#{number}", :duration => 0.5
96: end
97: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 99
99: def reload_script
100: number = params[:number].to_i
101:
102: script, result, output = Bio::Shell.cache[:results].restore(number)
103:
104: render :update do |page|
105: page.replace_html :script, script
106: end
107: end
# File lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb, line 109
109: def results
110: if Bio::Shell.cache[:results].number > 0
111: limit = params[:limit].to_i
112: max_num = Bio::Shell.cache[:results].number
113: min_num = [ max_num - limit + 1, 1 ].max
114: min_num = 1 if limit == 0
115:
116: render :update do |page|
117: # delete all existing results in the current DOM for clean up
118: page.select(".log").each do |element|
119: #page.hide element
120: page.remove element
121: end
122:
123: # add selected results to the current DOM
124: min_num.upto(max_num) do |@number|
125: #page.show "log_#{@number}"
126: @script, @result, @output = Bio::Shell.cache[:results].restore(@number)
127: if @script
128: render_log(page)
129: end
130: end
131: end
132: end
133: end