Sha256: b1dc4b38ec2e2e0099f17d4b55b4fe9bcee1a21122675b39bc56dee758ec7fb6

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

module MaglevDatabaseExplorer
  class ObjectController < ApplicationController
    def index
      id = Integer(params[:id])
      ranges = {}
    
      params.each_pair do |key, value|
        parts = key.split("_")
        
        if parts[0] == "range"
          ranges[parts[1].to_sym] = [params["range_#{parts[1]}_from"], params["range_#{parts[1]}_to"]]
       end
     end

      depth = params[:depth] ? Integer(params[:depth]) : 2

      render :json => {:success => true, :result => ObjectSpace._id2ref(id).to_database_view(depth, ranges, params)}
    end
  
    def evaluate
      obj_id = Integer(params[:id])
      obj = ObjectSpace._id2ref(obj_id)
      code = params[:code]
      language = params[:language]
      depth = params[:depth] ? Integer(params[:depth]) : 2
      ranges = {}
  
      if obj == nil and obj_id != 20
        render :json => {:success => false, :exception => "object not found"}
      else
        result = CodeEvaluation.wait_for_eval_thread do
          if language == "smalltalk"
            obj.__evaluate_smalltalk(code)
          elsif language == "ruby"
            obj.instance_eval(code)
          elsif language == "rubyClass"
            obj.module_eval(code)
          end
        end
  
        store_object(result)
  
        if result[0]
          # exception was catched
          render :json => {:success => true, :result => [true, result[1].to_database_view(1, ranges, params)]}
        else
          # no exception was catched
          render :json => {:success => true, :result => [false, result[1].to_database_view(depth, ranges, params)]}
        end
      end
    end
  
    private
    
    def store_object(obj)
      MaglevDatabaseExplorer.store_debug_object(obj)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
maglev-database-explorer-0.0.5 app/controllers/maglev_database_explorer/object_controller.rb
maglev-database-explorer-0.0.4 app/controllers/maglev_database_explorer/object_controller.rb
maglev-database-explorer-0.0.3 app/controllers/maglev_database_explorer/object_controller.rb