{"push_id":852778884,"size":81,"distinct_size":54,"ref":"refs/heads/master","head":"d0f677ffc99ba98adb39d8c3a06ac554a228fd2b","before":"5a2935822fd180042f3a4e8f72ee03870c8d4083","commits":[{"sha":"1fdd80dfc2e0a8335e6625afbac6a6c7161449b8","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"let the deserializer call #deserialize on nested forms instead of doing that itself.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/1fdd80dfc2e0a8335e6625afbac6a6c7161449b8"},{"sha":"bf8649bb0181d2af126ac189e15b7a6cf04f6c82","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"for deserializers, use pipelines now to simplify (and speed-up) populators, etc.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/bf8649bb0181d2af126ac189e15b7a6cf04f6c82"},{"sha":"712c7a7f67d559dc6d8d16d04e78a3e308d80cd6","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"make #deserialize public. remove #update! cause we can.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/712c7a7f67d559dc6d8d16d04e78a3e308d80cd6"},{"sha":"ce6c956bfdfdc05ff05a8470e06a4fac388e9146","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"allow pipeline stop in populator.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/ce6c956bfdfdc05ff05a8470e06a4fac388e9146"},{"sha":"c9a1af0000ba77c59e0e7dd2b33168c571e99cda","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"always set a parse_pipeline for every property. this makes it super fast and way simpler to debug as there's only a handful of functions involved per property.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/c9a1af0000ba77c59e0e7dd2b33168c571e99cda"},{"sha":"d5bda56b123eb1f90553e40e958a2d162f4f084d","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"fix test name.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/d5bda56b123eb1f90553e40e958a2d162f4f084d"},{"sha":"3ea21d4902e25ea8527a3ebf61577db0516dbea3","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"fix deserializer in deserialize_test.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/3ea21d4902e25ea8527a3ebf61577db0516dbea3"},{"sha":"3e00c798694e838189da1f2b449272586f9e2239","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"instead of using Representable::Deserialize after the Instance populator, and then having to manually override :deserialize (and that only for nested forms and not for scalar properties), directly use Reform:::Deserialize in the pipeline.\nthis will really just do `form.deserialize(params)` after the form got populated. the deserialize call will then deserialize the fragment and populate the nested form's attributes.\nsuper happy with this!","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/3e00c798694e838189da1f2b449272586f9e2239"},{"sha":"ca05a8b325046b9495c52c26cf772e9ae6d6ac52","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"in ::property, compute the parse_pipeline always based on definition[..] which will respect inheriting. always compute a populator, which is simply not included in the pipeline for scalars.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/ca05a8b325046b9495c52c26cf772e9ae6d6ac52"},{"sha":"15718101355e821a7ac107d924ac0121f43dbe81","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"cleanup","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/15718101355e821a7ac107d924ac0121f43dbe81"},{"sha":"dbdf350cd758a7a4ce6797b4200a3f2369e2d234","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"deprecate positional arguments in `populator: ->(fragment, ...)` in favour of ->(options) or, better, keyword arguments:\n\npopulator: ->(fragment:, index:, **o) { songs[index] = Song.find(fragment[:id]) }\n\npretty awesome!","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/dbdf350cd758a7a4ce6797b4200a3f2369e2d234"},{"sha":"49ed665e715ef969f0f0b5586bb84cf2bad48927","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"deprecate :prepopulate positional args.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/49ed665e715ef969f0f0b5586bb84cf2bad48927"},{"sha":"bcc4f72c5c7ad2cab1534b2c4b71365d75145094","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"we won't catch that exception again, will we?","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/bcc4f72c5c7ad2cab1534b2c4b71365d75145094"},{"sha":"f696b5abd6902d8b705095641d8d9510576f6fda","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"allow :populator to override old :populate_if_empty when inheriting.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/f696b5abd6902d8b705095641d8d9510576f6fda"},{"sha":"d22cd5d96d17df21c11fcb77647d67561a8d1081","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"add failing test where the deserializer still references the original populator.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/d22cd5d96d17df21c11fcb77647d67561a8d1081"},{"sha":"27deadc45ed521ddbe72db25baea9d07b2ad5a9a","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"the populator function in :parse_pipeline is now simply a delegator Populator::External that has absolutely no semantics but delegates to the form, which then calls its particular populator. this allows reusing deserializers for different contracts with different populators, which is pretty awesome for APIs.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/27deadc45ed521ddbe72db25baea9d07b2ad5a9a"},{"sha":"0d277fadce3497d047b5c4eeedd31cae69ab35b4","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"allow to inject options into Form#deserializer.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/0d277fadce3497d047b5c4eeedd31cae69ab35b4"},{"sha":"2c8c892a883de5eb7019e59240c1ea329e2be2b3","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"add ReadFragment to parse_pipeline.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/2c8c892a883de5eb7019e59240c1ea329e2be2b3"},{"sha":"7d6249f87b888a154221c4a66b9adaa0d8c5ff93","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"new representable 2.4 api.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/7d6249f87b888a154221c4a66b9adaa0d8c5ff93"},{"sha":"fdcc390e0bc95c87118ad1932584d13121ced724","author":{"email":"3de680f0fd062129730970f68a7d1bb004d15fd0@gmail.com","name":"Nick Sutterer"},"message":"runs with representable 3.","distinct":false,"url":"https://api.github.com/repos/amulter/reform/commits/fdcc390e0bc95c87118ad1932584d13121ced724"}]}