Add a simple validation to the service name to prevent setup issues
This commit is contained in:
@@ -218,7 +218,7 @@ class Kamal::Configuration
|
||||
|
||||
|
||||
def valid?
|
||||
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version
|
||||
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version && ensure_valid_service_name
|
||||
end
|
||||
|
||||
def to_h
|
||||
@@ -283,6 +283,12 @@ class Kamal::Configuration
|
||||
true
|
||||
end
|
||||
|
||||
def ensure_valid_service_name
|
||||
raise ArgumentError, "Service name can only include alphanumeric characters and hyphens" unless raw_config[:service] =~ /^[a-z0-9-]+$/
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def ensure_valid_kamal_version
|
||||
if minimum_version && Gem::Version.new(minimum_version) > Gem::Version.new(Kamal::VERSION)
|
||||
raise ArgumentError, "Current version is #{Kamal::VERSION}, minimum required is #{minimum_version}"
|
||||
|
||||
@@ -42,6 +42,16 @@ class ConfigurationTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "service name valid" do
|
||||
assert Kamal::Configuration.new(@deploy.tap { _1[:service] = "hey-app1" }).valid?
|
||||
end
|
||||
|
||||
test "service name invalid" do
|
||||
assert_raise(ArgumentError) do
|
||||
Kamal::Configuration.new @deploy.tap { _1[:service] = "app.com" }
|
||||
end
|
||||
end
|
||||
|
||||
test "roles" do
|
||||
assert_equal %w[ web ], @config.roles.collect(&:name)
|
||||
assert_equal %w[ web workers ], @config_with_roles.roles.collect(&:name)
|
||||
|
||||
Reference in New Issue
Block a user