Add app reboot

This commit is contained in:
David Heinemeier Hansson
2023-02-02 15:28:34 +01:00
parent 7494f08978
commit 7cc64299c8
2 changed files with 40 additions and 1 deletions

View File

@@ -19,6 +19,13 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
end
end
desc "reboot", "Reboot app on host (stop container, remove container, start new container)"
def reboot
stop
remove_container
boot
end
desc "start", "Start existing app on servers (use --version=<git-hash> to designate specific version)"
option :version, desc: "Defaults to the most recent git-hash in local repository"
def start

32
test/cli/app_test.rb Normal file
View File

@@ -0,0 +1,32 @@
require "test_helper"
require "active_support/testing/stream"
require "mrsk/cli"
class CliAppTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Stream
setup do
ENV["VERSION"] = "999"
ENV["RAILS_MASTER_KEY"] = "123"
ENV["MYSQL_ROOT_PASSWORD"] = "secret123"
end
teardown do
ENV.delete("RAILS_MASTER_KEY")
ENV.delete("MYSQL_ROOT_PASSWORD")
ENV.delete("VERSION")
end
test "boot" do
assert_match /Running docker run -d --restart unless-stopped --name app-999/, run_command("boot")
end
test "reboot" do
assert_equal "", run_command("reboot")
end
private
def run_command(*command)
stdouted { Mrsk::Cli::App.start([*command, "-c", "test/fixtures/deploy_with_accessories.yml"]) }
end
end