[mproxy](https://github.com/kevinmcconnell/mproxy) is a custom minimal proxy designed specifically for Kamal. It has two big advantages over Traefik: 1. Imperative deployments - we tell it to switch from container A to container B, and it waits for container B to start then switches. No need to poll for health checks ourselves or mess around with forcing health checks to fail. 2. Support for multiple apps - as much as possible, configuration is supplied at runtime by the deploy command, allowing us to have multiple apps share an instance of mproxy without conflicting config.
23 lines
677 B
Ruby
23 lines
677 B
Ruby
require "test_helper"
|
|
|
|
class CommandsServerTest < ActiveSupport::TestCase
|
|
setup do
|
|
@config = {
|
|
service: "app", image: "dhh/app", registry: { "username" => "dhh", "password" => "secret" }, servers: [ "1.1.1.1" ]
|
|
}
|
|
end
|
|
|
|
test "ensure run directory" do
|
|
assert_equal "mkdir -p .kamal", new_command.ensure_run_directory.join(" ")
|
|
end
|
|
|
|
test "ensure non default run directory" do
|
|
assert_equal "mkdir -p /var/run/kamal", new_command(run_directory: "/var/run/kamal").ensure_run_directory.join(" ")
|
|
end
|
|
|
|
private
|
|
def new_command(extra_config = {})
|
|
Kamal::Commands::Server.new(Kamal::Configuration.new(@config.merge(extra_config)))
|
|
end
|
|
end
|