hanami / hanami/hanami-validations
Unexpected value returned from `Hanami::Validations::Namespace`
- Dominant language
- Ruby
- Stars
- 208
- Forks
- 45
- PR merge metrics
- No merged PRs in 30d
Description
# Environments
- CRuby 2.7.6
- hanami-validations 1.3.9
# Issue detail
When the validator class is defined in the module with name includes `Validator`, `Hanami::Validations::Namespace` returns unexpected value.
```ruby
require 'hanami/validations'
module Validators
class UserValidator
include Hanami::Validations
messages :i18n
validations do
required(:name) { filled? & str? }
end
end
end
puts Validators::UserValidator.namespace.to_s #=> s.user_validator
```
## Expected
```ruby
puts Validators::UserValidator.namespace.to_s #=> validators.user
```
# Motivation
I'd like to define custom error messages for this validator, like below.
```yaml
# config/locales/errors.en.yml
en:
errors:
rules:
validators:
user:
rules:
name:
filled?: "must be non empty string"
str?: "must be non empty string"
```
# How to escape
## 1. define namespace manually
https://guides.hanamirb.org/v1.3/validations/advanced-usage/#custom-namespace
```ruby
require 'hanami/validations'
module Validators
class UserValidator
include Hanami::Validations
namespace :'validators/user'
end
end
```
## 2. apply monkey patch (for Ruby >= 2.5.0)
```ruby
require 'hanami/validations'
module Hanami
module Validations
class Namespace
private
def name_without_suffix
@name.delete_suffix(SUFFIX)
end
end
end
end
module Validators
class UserValidator
include Hanami::Validations
end
end
puts Validators::UserValidator.namespace.to_s #=> validators.user
```
---
Now `hanami-validations` gem supports Ruby >= 2.3.0, so I give up to create pull request :(
Contributor guide
Assessment
This issue has not been assessed yet.