Module: IRuby::SessionAdapter

Defined in:
lib/iruby/session_adapter.rb,
lib/iruby/session_adapter/cztop_adapter.rb,
lib/iruby/session_adapter/pyzmq_adapter.rb,
lib/iruby/session_adapter/rbczmq_adapter.rb,
lib/iruby/session_adapter/ffirzmq_adapter.rb

Defined Under Namespace

Classes: BaseAdapter, CztopAdapter, FfirzmqAdapter, PyzmqAdapter, RbczmqAdapter

Class Method Summary collapse

Class Method Details

.select_adapter_class(name = nil) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/iruby/session_adapter.rb', line 42

def self.select_adapter_class(name=nil)
  classes = {
    'ffi-rzmq' => SessionAdapter::FfirzmqAdapter,
    'cztop' => SessionAdapter::CztopAdapter,
    'rbczmq' => SessionAdapter::RbczmqAdapter,
    'pyzmq' => SessionAdapter::PyzmqAdapter
  }
  if (name ||= ENV.fetch('IRUBY_SESSION_ADAPTER', nil))
    cls = classes[name]
    unless cls.available?
      if ENV['IRUBY_SESSION_ADAPTER']
        raise SessionAdapterNotFound,
              "Session adapter `#{name}` from IRUBY_SESSION_ADAPTER is unavailable"
      else
        raise SessionAdapterNotFound,
              "Session adapter `#{name}` is unavailable"
      end
    end
    return cls
  end
  classes.each_value do |cls|
    return cls if cls.available?
  end
  raise SessionAdapterNotFound, "No session adapter is available"
end