Skip to content

Instantly share code, notes, and snippets.

View serradura's full-sized avatar
🎯
Focusing

Rodrigo Serradura serradura

🎯
Focusing
View GitHub Profile
@serradura
serradura / 01.rb
Created October 28, 2020 17:40
Examples of dependency injection using the u-case gem
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-case', '~> 4.2.1'
end
require 'json'
module ReportFormatters
@serradura
serradura / 01_metodos_de_instancia.rb
Created October 26, 2020 16:53
Ruby - Métodos de instância VS de classe VS lambda
class Calc
def sum(a, b)
a + b
end
def multiply(a, b)
a * b
end
end
@serradura
serradura / experiment.rb
Last active October 20, 2020 02:11
Create a proxy to track the usage of the Ruby send method
module Words1
def self.foo; "foo1"; end
def self.bar; "bar1"; end
end
module Words2
extend self
private
@serradura
serradura / 01.rb
Last active October 15, 2020 21:32
"Immutable" objects (PORO VS u-attributes)
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-attributes', '~> 2.6.0'
end
# ------------------- -------------------
class Person
@serradura
serradura / sample.rb
Last active October 15, 2020 21:18
u-case + u-observers
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-case'
gem 'u-observers'
end
class Person
include Micro::Observers
@serradura
serradura / observers.rb
Last active April 21, 2022 19:33
Simple observer (pub/sub) in Ruby
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-test'
gem 'activerecord', require: 'active_record'
gem 'sqlite3'
end
@serradura
serradura / 01_value_object.rb
Created September 23, 2020 00:22
Value and form objects using the u-attributes gem
require 'bundler/inline'
require 'digest'
gemfile do
source 'https://rubygems.org'
gem 'u-attributes', '~> 2.6.0'
end
class Password
include Micro::Attributes.with(:initialize)
@serradura
serradura / 00_getting_started.rb
Last active September 20, 2020 20:46
haroldo - u-case
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'awesome_print'
gem 'pry'
gem 'u-case', '~> 4.0.0'
gem 'activemodel', '~> 6.0'
@serradura
serradura / pattern_matching.rb
Last active August 25, 2020 23:12
Pattern matching for old Rubies
def on(arg, spec)
track, result = arg.to_a[0]
type, data = result.to_a[0]
hook = spec.fetch(track, {})[type]
return unless hook
keys = hook.parameters.map(&:last)
@serradura
serradura / use_case_skip.rb
Last active August 25, 2020 19:00
u-case ideas - Skip e Chech
module ContractTemplates
module Update
class TryCreateRevision < Micro::Case
attributes :company, :params
def call!
return Success(:skipped_contract_revision) unless term_changed?
ContractRevision.create!(contract_revision_params)