Eager load only CLI for faster commands

This commit is contained in:
Donal McBreen
2024-08-07 14:01:28 +01:00
committed by Donal McBreen
parent 5910249d02
commit 1d0e81b00a
9 changed files with 13 additions and 5 deletions

View File

@@ -6,8 +6,9 @@ require "active_support"
require "zeitwerk" require "zeitwerk"
require "yaml" require "yaml"
require "tmpdir" require "tmpdir"
require "pathname"
loader = Zeitwerk::Loader.for_gem loader = Zeitwerk::Loader.for_gem
loader.ignore(File.join(__dir__, "kamal", "sshkit_with_ext.rb")) loader.ignore(File.join(__dir__, "kamal", "sshkit_with_ext.rb"))
loader.setup loader.setup
loader.eager_load # We need all commands loaded. loader.eager_load_namespace(Kamal::Cli) # We need all commands loaded.

View File

@@ -74,8 +74,6 @@ module Kamal::Cli
if KAMAL.holding_lock? if KAMAL.holding_lock?
yield yield
else else
ensure_run_and_locks_directory
acquire_lock acquire_lock
begin begin
@@ -104,6 +102,8 @@ module Kamal::Cli
end end
def acquire_lock def acquire_lock
ensure_run_and_locks_directory
raise_if_locked do raise_if_locked do
say "Acquiring the deploy lock...", :magenta say "Acquiring the deploy lock...", :magenta
on(KAMAL.primary_host) { execute *KAMAL.lock.acquire("Automatic deploy lock", KAMAL.config.version), verbosity: :debug } on(KAMAL.primary_host) { execute *KAMAL.lock.acquire("Automatic deploy lock", KAMAL.config.version), verbosity: :debug }

View File

@@ -1,3 +1,5 @@
require "concurrent/ivar"
class Kamal::Cli::Healthcheck::Barrier class Kamal::Cli::Healthcheck::Barrier
def initialize def initialize
@ivar = Concurrent::IVar.new @ivar = Concurrent::IVar.new

View File

@@ -13,6 +13,8 @@ class Kamal::Cli::Lock < Kamal::Cli::Base
option :message, aliases: "-m", type: :string, desc: "A lock message", required: true option :message, aliases: "-m", type: :string, desc: "A lock message", required: true
def acquire def acquire
message = options[:message] message = options[:message]
ensure_run_and_locks_directory
raise_if_locked do raise_if_locked do
on(KAMAL.primary_host) do on(KAMAL.primary_host) do
execute *KAMAL.server.ensure_run_directory execute *KAMAL.server.ensure_run_directory

View File

@@ -1,5 +1,6 @@
require "active_support/core_ext/enumerable" require "active_support/core_ext/enumerable"
require "active_support/core_ext/module/delegation" require "active_support/core_ext/module/delegation"
require "active_support/core_ext/object/blank"
class Kamal::Commander class Kamal::Commander
attr_accessor :verbosity, :holding_lock, :connected attr_accessor :verbosity, :holding_lock, :connected

View File

@@ -2,7 +2,6 @@ require "active_support/ordered_options"
require "active_support/core_ext/string/inquiry" require "active_support/core_ext/string/inquiry"
require "active_support/core_ext/module/delegation" require "active_support/core_ext/module/delegation"
require "active_support/core_ext/hash/keys" require "active_support/core_ext/hash/keys"
require "pathname"
require "erb" require "erb"
require "net/ssh/proxy/jump" require "net/ssh/proxy/jump"

View File

@@ -3,6 +3,7 @@ require "sshkit/dsl"
require "net/scp" require "net/scp"
require "active_support/core_ext/hash/deep_merge" require "active_support/core_ext/hash/deep_merge"
require "json" require "json"
require "concurrent/atomic/semaphore"
class SSHKit::Backend::Abstract class SSHKit::Backend::Abstract
def capture_with_info(*args, **kwargs) def capture_with_info(*args, **kwargs)

View File

@@ -1,3 +1,5 @@
require "active_support/core_ext/object/try"
module Kamal::Utils module Kamal::Utils
extend self extend self

View File

@@ -107,7 +107,7 @@ class MainTest < IntegrationTest
assert_env :HOST_TOKEN, "abcd", version: version, vm: :vm1 assert_env :HOST_TOKEN, "abcd", version: version, vm: :vm1
assert_env :SECRET_TOKEN, "1234 with \"中文\"", version: version, vm: :vm1 assert_env :SECRET_TOKEN, "1234 with \"中文\"", version: version, vm: :vm1
assert_no_env :CLEAR_TAG, version: version, vm: :vm1 assert_no_env :CLEAR_TAG, version: version, vm: :vm1
assert_no_env :SECRET_TAG, version: version, vm: :vm11 assert_no_env :SECRET_TAG, version: version, vm: :vm1
assert_env :CLEAR_TAG, "tagged", version: version, vm: :vm2 assert_env :CLEAR_TAG, "tagged", version: version, vm: :vm2
assert_env :SECRET_TAG, "TAGME", version: version, vm: :vm2 assert_env :SECRET_TAG, "TAGME", version: version, vm: :vm2
end end