From fa044513714fab5aa79593c4782493eb6a0e38b5 Mon Sep 17 00:00:00 2001 From: Paul Battley Date: Fri, 24 Aug 2018 17:50:47 +0100 Subject: [PATCH] Load default error via locale, using Engine This enables the error to be customised in the normal Rails manner. --- config/locales/en.yml | 4 ++++ lib/valid_url.rb | 3 ++- lib/valid_url/engine.rb | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 config/locales/en.yml create mode 100644 lib/valid_url/engine.rb diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..60ab820 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,4 @@ +en: + errors: + messages: + invalid_url: "is an invalid URL" diff --git a/lib/valid_url.rb b/lib/valid_url.rb index e99c93a..f1091c1 100644 --- a/lib/valid_url.rb +++ b/lib/valid_url.rb @@ -1,4 +1,5 @@ # -*- encoding : utf-8 -*- +require "valid_url/engine" require "addressable/uri" require "resolv" @@ -19,7 +20,7 @@ def validate_each(record, attribute, value) end unless !invalid && valid_scheme?(uri.scheme) && valid_host?(uri.host) && valid_path?(uri.path) - record.errors[attribute] << (options[:message] || "is an invalid URL") + record.errors.add attribute, :invalid_url, options end end diff --git a/lib/valid_url/engine.rb b/lib/valid_url/engine.rb new file mode 100644 index 0000000..d6e46f9 --- /dev/null +++ b/lib/valid_url/engine.rb @@ -0,0 +1,7 @@ +module ValidUrl + class Engine < ::Rails::Engine + config.before_initialize do + config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"] + end + end +end