Class: CanvasERD::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/canvas_erd/server.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

HOST =
"127.0.0.1"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app:, port: nil, rack_server_class: nil) ⇒ Server

Returns a new instance of Server.



164
165
166
167
168
# File 'lib/canvas_erd/server.rb', line 164

def initialize(app:, port: nil, rack_server_class: nil)
  @app = app
  @port = port || available_port
  @rack_server_class = rack_server_class || self.class.rack_server_class
end

Instance Attribute Details

#portObject (readonly)

Returns the value of attribute port.



162
163
164
# File 'lib/canvas_erd/server.rb', line 162

def port
  @port
end

Class Method Details

.rack_server_class(loader: method(:load_rack_server_class)) ⇒ Object



185
186
187
188
189
# File 'lib/canvas_erd/server.rb', line 185

def self.rack_server_class(loader: method(:load_rack_server_class))
  loader.call("rackup", "Rackup") ||
    loader.call("rack/server", "Rack") ||
    raise(Error, "No Rack server is available in this Rails application")
end

Instance Method Details

#startObject



170
171
172
173
174
175
176
177
178
179
# File 'lib/canvas_erd/server.rb', line 170

def start
  @rack_server_class.start(
    app: @app,
    Host: HOST,
    Port: port,
    environment: "none"
  )
rescue LoadError => error
  raise Error, "No Rack server handler is available: #{error.message}"
end

#urlObject



181
182
183
# File 'lib/canvas_erd/server.rb', line 181

def url
  "http://#{HOST}:#{port}/"
end