Sha256: 8014fc5e06532a46db32d69e00e9d04d9bdb4eca4ed671b02c3b2ffe42311800

Contents?: true

Size: 1.03 KB

Versions: 61

Compression:

Stored size: 1.03 KB

Contents

require 'drb'

module SpiderApps; module DrbServer
    
    class ModelServer
        
        def initialize(uri=nil)
            @models = {}
            @uri = uri
        end
        
        def add(mod)
            if (mod.is_a?(Module) && mod.include?(Spider::App))
                mod.models.each { |m| @models[m] = true }
            elsif (mod.is_a?(Spider::Model::BaseModel))
                @models[mod] = true
            end
        end
        
        def start
            DRb.start_service @uri, self
            trap('TERM') { DRb.stop_service }
            trap('INT') { DRb.stop_service }
            Spider::Logger.debug("Model server listening on #{DRb.uri}")
            DRb.thread.join
        end
        
        def get(model_name, *args)
            model = const_get_full(model_name)
            return model.new(*args)
        end
        
        def method_missing(method, *args)
            model = const_get_full(args.shift)
            return model.send(method, *args)
        end
        
    end
    
    
end; end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
spiderfw-1.0.1 apps/drb_server/lib/model_server.rb
spiderfw-1.0.0 apps/drb_server/lib/model_server.rb
spiderfw-0.6.39 apps/drb_server/lib/model_server.rb
spiderfw-0.6.38 apps/drb_server/lib/model_server.rb
spiderfw-0.6.37 apps/drb_server/lib/model_server.rb
spiderfw-0.6.35 apps/drb_server/lib/model_server.rb
spiderfw-0.6.34 apps/drb_server/lib/model_server.rb
spiderfw-0.6.33 apps/drb_server/lib/model_server.rb
spiderfw-0.6.32 apps/drb_server/lib/model_server.rb
spiderfw-0.6.31 apps/drb_server/lib/model_server.rb
spiderfw-0.6.30 apps/drb_server/lib/model_server.rb
spiderfw-0.6.29 apps/drb_server/lib/model_server.rb
spiderfw-0.6.28 apps/drb_server/lib/model_server.rb
spiderfw-0.6.27 apps/drb_server/lib/model_server.rb
spiderfw-0.6.26 apps/drb_server/lib/model_server.rb
spiderfw-0.6.26.pre1 apps/drb_server/lib/model_server.rb
spiderfw-0.6.25 apps/drb_server/lib/model_server.rb
spiderfw-0.6.24 apps/drb_server/lib/model_server.rb
spiderfw-0.6.23 apps/drb_server/lib/model_server.rb
spiderfw-0.6.22 apps/drb_server/lib/model_server.rb