module DbSucker::Application::Container::Validations
Public Instance Methods
__keys_for(which)
click to toggle source
# File lib/db_sucker/application/container/validations.rb, line 42 def __keys_for which { root: %w[source variations], source: %w[adapter ssh database hostname username password args client_binary dump_binary gzip_binary integrity_sha integrity_binary], source_ssh: %w[hostname username keyfile password port tmp_location], variation: %w[adapter label base database hostname username password args client_binary incremental file only except importer importer_flags ignore_always constraints], }[which] || [] end
_verify(token, hash, keys)
click to toggle source
# File lib/db_sucker/application/container/validations.rb, line 32 def _verify token, hash, keys begin hash.assert_valid_keys(keys) raise ConfigurationError, "A source must define an adapter (mysql2, postgres, ...)" if token == "/source" && hash["adapter"].blank? raise ConfigurationError, "A variation `#{name}' can only define either a `only' or `except' option" if hash["only"] && hash["except"] rescue ConfigurationError, ArgumentError => ex abort "#{ex.message} (in `#{src}' [#{token}])" end end
verify!()
click to toggle source
# File lib/db_sucker/application/container/validations.rb, line 5 def verify! _verify("/", data, __keys_for(:root)) # validate source if sd = data["source"] _verify("/source", sd, __keys_for(:source)) if sd["ssh"] _verify("/source/ssh", sd["ssh"], __keys_for(:source_ssh)) ssh_key_files end end # validate variations if sd = data["variations"] sd.each do |name, vd| begin _verify("/variations/#{name}", vd, __keys_for(:variation)) base = sd[vd["base"]] if vd["base"] raise(ConfigurationError, "variation `#{name}' cannot base from `#{vd["base"]}' since it doesn't exist (in `#{src}')") if vd["base"] && !base raise ConfigurationError, "variation `#{name}' must define an adapter (mysql2, postgres, ...)" if vd["adapter"].blank? && vd["database"] != false && (!base || base["adapter"].blank?) rescue ConfigurationError => ex abort "#{ex.message} (in `#{src}' [/variations/#{name}])" end end end end