timriley on rich-component-dirs-config
Add extra attributes to compone… Add unit tests for Component.lo… (compare)
timriley on rich-component-dirs-config
Add unit tests for ComponentDir (compare)
timriley on rich-component-dirs-config
Tidy AutoRegistrar Move regist… (compare)
timriley on rich-component-dirs-config
Tidy AutoRegistrar Move regist… (compare)
timriley on rich-component-dirs-config
Add spec (and adjust approach) … (compare)
timriley on rich-component-dirs-config
Initialize components directly … Remove unneeded requiring of co… (compare)
timriley on rich-component-dirs-config
Initialize components directly … (compare)
timriley on rich-component-dirs-config
Remove stale comment Scan file for magic comment opt… Do not load components with aut… (compare)
timriley on rich-component-dirs-config
Use dry-configurable master (compare)
timriley on cherry-pick-concurrent-requires
M::List::Validated[M::Success(1), M::Failure("boom 2")].typed(M::Result).traverse => Failure(List<Result>["boom 1", "boom2"])
Hey folks, we've been testing Zulip as a Gitter replacement for the last few days. So far it feels really great and we'd like more people to sign up and check it out. We did not decide yet if we want to switch but it's likely that we will, because of this please sign up and let's chat there whether you like it or not.
You can sign up right here: https://dry-rb.zulipchat.com/register/
If you haven't heard about Zulip, it's an OSS communication platform. Something between a chat and email, with a unique communication model based on streams and topics. The company behind it was acquired by Dropbox, but they open sourced the project back in 2015. Its development is very active and it looks promising in general.
Check out
Why Zulip
here: https://zulipchat.com/why-zulip/
you could try Zulip @shawn42 ^
@/all hey, after 2 weeks of testing we decided to switch to Zulip and we are saying "good bye" to Gitter. From April 1st (no kidding) we'll be hanging out in Zulip and stop paying attention to this Gitter chat. You can join our Zulip organization here: https://dry-rb.zulipchat.com/register/
ps. rom-rb gitter chat will move too
require 'spec_helper'
module CRUD
class Update
include Dry::Transaction
step :validate
step :persist
def validate(input)
Success(input.to_s + model_class.to_s)
end
def persist(input)
Success(input.to_s + model_class.to_s)
end
end
class ORMModel1
end
class Update1 < Update
def model_class
ORMModel1
end
end
end
describe 'ParamOverride' do
context 'update1' do
subject { CRUD::Update1.new.call params }
let(:params) { {a:1,b:2} }
context 'negative cases' do
specify 'inheritance just does not work' do
expect(subject).to be_success
expect(subject.value!).to_not eq('{}ORMModel1')
end
end
end
end
@/all hey, after 2 weeks of testing we decided to switch to Zulip and we are saying "good bye" to Gitter. From April 1st (no kidding) we'll be hanging out in Zulip and stop paying attention to this Gitter chat. You can join our Zulip organization here: https://dry-rb.zulipchat.com/register/
ps. rom-rb gitter chat will move too
2.5.3p105> require "dry-types"
=> true
2.5.3p105> include Dry.Types()
=> Object
2.5.3p105> Params::Integer["1"]
=> 1
2.5.3p105> Params::Integer[1]
=> 1
2.5.3p105> Params::Time["2019-11-26 15:50:12 +0000"]
=> 2019-11-26 15:50:12 +0000
2.5.3p105> Params::Time[Time.new]
Traceback (most recent call last):
16: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli.rb:13:in `start'
15: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
14: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli.rb:22:in `dispatch'
13: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
12: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
11: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
10: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli.rb:362:in `exec'
9: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli/exec.rb:27:in `run'
8: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli/exec.rb:74:in `kernel_load'
7: from /var/lib/gems/2.5.0/gems/bundler-1.15.4/lib/bundler/cli/exec.rb:74:in `load'
6: from /usr/bin/irb:11:in `<top (required)>'
5: from (irb):6
4: from /var/bundler/gems/dry-types-1.2.1/lib/dry/types/type.rb:49:in `call'
3: from /var/bundler/gems/dry-types-1.2.1/lib/dry/types/constructor.rb:59:in `call_unsafe'
2: from /var/bundler/gems/dry-types-1.2.1/lib/dry/types/constructor/function.rb:61:in `call'
1: from /var/bundler/gems/dry-types-1.2.1/lib/dry/types/coercions.rb:87:in `to_time'
Dry::Types::CoercionError (2019-11-26 16:16:50 +0000 is not a string)
obj.class == Time ? obj : coerce(obj, Time)
module Types
include Dry::Types(default: :nominal)
CompactArray = Types::Coercible::Array.constructor { |vs| vs.map(&:presence).compact.map }
SplittingCompactArray = Types::Coercible::Array.constructor do |vs|
vs
.flat_map { |v| v.is_a?(::String) ? v.split(',') : v }
.map(&:presence)
.compact
.map
end
end