Comments (4)
this doesn't work too
class Shelf < Dry::Data::Value
attribute :books, Types::Strict::Array.member(Types::Maybe::Strict::String)
end
class Room < Dry::Data::Value
attribute :shelf, Shelf
end
shelf = Shelf.new(:books => ['Some book'])
puts Room.new(:shelf => shelf).inspect
/usr/lib/ruby/gems/2.3.0/gems/dry-data-0.5.1/lib/dry/data/struct.rb:36:in `rescue in new': [Room.new] #<Shelf books=[Some("Some book")]> (Shelf) has invalid type for :shelf (Dry::Data::StructError)
from /usr/lib/ruby/gems/2.3.0/gems/dry-data-0.5.1/lib/dry/data/struct.rb:34:in `new'
from dry-types.
Thanks for the report. I'll fix it in the next release.
from dry-types.
@solnic more generic problem:
class X
end
Dry::Types.register_class(X)
Dry::Types[X][X.new] # ArgumentError: wrong number of arguments (given 1, expected 0)
This:
class Y < Dry::Types::Struct
attribute :y, Types::Strict::String
end
type = Dry::Types[Y]
attributes = { y: '---' }
y = Y.new(attributes) # => #<Y:0x00000004ed0d88 @y="---">
type[attributes] # => #<Y:0x00000004d265c8 @y="---">
type[y] # => #<Y:0x00000004f0bd48 @y="---">
Works just by occasion, because y
responds to []
just like attributes
.
I think that Type#[]
should not recreate instances that are already valid. If your upcoming refactoring solves this issue it would be good.
from dry-types.
@marshall-lee it doesn't recreate, or at least it should not. defo a bug, will fix
from dry-types.
Related Issues (20)
- Include `Types::Params::String` HOT 8
- Type#fallback to mock previous implementation of Type#default HOT 10
- Constructor is not applied properly to the result of types Sum HOT 5
- Types::Params::Integer incorrect coercion for numeric values HOT 9
- Types::Params::*.optional not handling empty string HOT 4
- Anonymous Dry::Types based module cannot be extended HOT 4
- Params namespace disapearing HOT 9
- Params coercion for Array works in an unintuitive way HOT 1
- https://dry-rb.org/gems/dry-types/ not at latest version HOT 1
- [Security] Workflow ci.yml is using vulnerable action actions/checkout
- Compound Types with Examples HOT 1
- Dry::Container::Error: There is already an item registered with the key "nominal.string" on jruby-head HOT 4
- Future-proof local override for Types::Instance/Constructor classes that potentially collide with predicates
- Unexpected error raised from Sum type HOT 7
- Types::Coeercible::Integer, should this use Base 10? HOT 2
- Add Zeitwerk autoloader
- Using transform_keys breaks error handling
- Undefined method after upgrading dependencies. HOT 5
- Missing method implementation for `Enum.each_value` HOT 1
- Types.Constructor failing on Ruby 3.1 HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dry-types.