34 lines
982 B
Ruby
34 lines
982 B
Ruby
module Validators
|
|
class DeployEnv::DeployEnvs < Base
|
|
|
|
def valid?
|
|
envs = @model.deploy_envs.map {|d| d.identifier}
|
|
non_uniq = envs.uniq.select{|u| envs.count(u) > 1}
|
|
unless non_uniq.empty?
|
|
@msg = "Deploy environment(s) '#{non_uniq.join("', '")}' is/are not unique"
|
|
return false
|
|
end
|
|
@model.deploy_envs.each do |d|
|
|
d.validate!
|
|
end
|
|
true
|
|
end
|
|
|
|
# do not rescue children validators' errors. With this:
|
|
# class of child validator's error doesn't disappeared
|
|
# logs doesn't contain two similar records
|
|
def validate!
|
|
raise error_class.new(message) unless valid?
|
|
rescue InvalidRecord => e
|
|
raise e
|
|
rescue StandardError => e
|
|
DevopsLogger.logger.error [e.message, e.backtrace].join("\n")
|
|
raise error_class.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}")
|
|
end
|
|
|
|
def message
|
|
"Invalid project: #{@msg}."
|
|
end
|
|
end
|
|
end
|