Sha256: 21e778ec00140b1c5a2fbb6429c9edbb82aac304766d4bcd8ba9563be473bb7f

Contents?: true

Size: 906 Bytes

Versions: 2

Compression:

Stored size: 906 Bytes

Contents

module MissionControl::Jobs::Server::Serializable
  extend ActiveSupport::Concern

  class_methods do
    # Loads a server from a locator string with the format +<application>:<server>+. For example:
    #
    #   bc4:resque_chicago
    #
    # When the +<server>+ fragment is omitted it will return the first server for the application.
    def from_global_id(global_id)
      app_id, server_id = global_id.split(":")

      application = MissionControl::Jobs.applications[app_id] or raise MissionControl::Jobs::Errors::ResourceNotFound, "No application with id #{app_id} found"
      server = server_id ? application.servers[server_id] : application.servers.first

      server or raise MissionControl::Jobs::Errors::ResourceNotFound, "No server for #{global_id} found"
    end
  end

  def to_global_id
    suffix = ":#{id}" if application.servers.length > 1
    "#{application&.id}#{suffix}"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mission_control-jobs-0.1.1 lib/mission_control/jobs/server/serializable.rb
mission_control-jobs-0.1.0 lib/mission_control/jobs/server/serializable.rb