Merge pull request #507 from leonvogt/introduce-absolute-accessories-paths

Add option to set an absolute directory path
This commit is contained in:
Donal McBreen
2023-11-28 10:15:27 +00:00
committed by GitHub
2 changed files with 17 additions and 7 deletions

View File

@@ -70,8 +70,8 @@ class Kamal::Configuration::Accessory
def directories def directories
specifics["directories"]&.to_h do |host_to_container_mapping| specifics["directories"]&.to_h do |host_to_container_mapping|
host_relative_path, container_path = host_to_container_mapping.split(":") host_path, container_path = host_to_container_mapping.split(":")
[ expand_host_path(host_relative_path), container_path ] [ expand_host_path(host_path), container_path ]
end || {} end || {}
end end
@@ -138,13 +138,17 @@ class Kamal::Configuration::Accessory
def remote_directories_as_volumes def remote_directories_as_volumes
specifics["directories"]&.collect do |host_to_container_mapping| specifics["directories"]&.collect do |host_to_container_mapping|
host_relative_path, container_path = host_to_container_mapping.split(":") host_path, container_path = host_to_container_mapping.split(":")
[ expand_host_path(host_relative_path), container_path ].join(":") [ expand_host_path(host_path), container_path ].join(":")
end || [] end || []
end end
def expand_host_path(host_relative_path) def expand_host_path(host_path)
"#{service_data_directory}/#{host_relative_path}" absolute_path?(host_path) ? host_path : "#{service_data_directory}/#{host_path}"
end
def absolute_path?(path)
Pathname.new(path).absolute?
end end
def service_data_directory def service_data_directory

View File

@@ -149,10 +149,16 @@ class ConfigurationAccessoryTest < ActiveSupport::TestCase
assert_match "%", @config.accessory(:mysql).files.keys[2].read assert_match "%", @config.accessory(:mysql).files.keys[2].read
end end
test "directories" do test "directory with a relative path" do
@deploy[:accessories]["mysql"]["directories"] = [ "data:/var/lib/mysql" ]
assert_equal({"$PWD/app-mysql/data"=>"/var/lib/mysql"}, @config.accessory(:mysql).directories) assert_equal({"$PWD/app-mysql/data"=>"/var/lib/mysql"}, @config.accessory(:mysql).directories)
end end
test "directory with an absolute path" do
@deploy[:accessories]["mysql"]["directories"] = [ "/var/data/mysql:/var/lib/mysql" ]
assert_equal({"/var/data/mysql"=>"/var/lib/mysql"}, @config.accessory(:mysql).directories)
end
test "options" do test "options" do
assert_equal ["--cpus", "\"4\"", "--memory", "\"2GB\""], @config.accessory(:redis).option_args assert_equal ["--cpus", "\"4\"", "--memory", "\"2GB\""], @config.accessory(:redis).option_args
end end