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 / u-attributes_form_object.rb
Created February 7, 2022 03:05
Micro::Attributes::FormObject
# frozen_string_literal: true
module Micro::Attributes
module FormObject
module ClassMethods
def empty
instance = self.allocate
instance.send(:attributes=, Kind::Empty::HASH)
instance
end
@serradura
serradura / a_primitive_obsession.rb
Created December 16, 2021 23:49
Examples of how to avoid the primitive obsession in Ruby.
rgb = [5, 55, 255]
def rgb_to_hex(r, g, b)
'#%02x%02x%02x' % [r, g, b]
end
p rgb # [5, 55, 255]
p rgb_to_hex(*rgb) # "#0537ff"
@serradura
serradura / a.rb
Created November 11, 2021 23:30
Exemplo de como fazer um flow condicional com u-case + como ter steps mais claros ao importar constantes de outro namespace
require_relative 'a_ext'
module Goals
class BuildMonthDistributionFlow < Micro::Case
include Constants[
:SumGoalsDaysAtPeriod, :ValidateDailyDistribution, :ValidatePeriodDistribution,
:BuildPeriodsAndDaysByDailyWeight, :BuildPeriodsAndDaysByPeriodWeight
].from(Goals::Cases::Monthly)
attributes :periods, :goal
@serradura
serradura / u-case_attribute_validations.rb
Created July 13, 2021 15:39
u-case - attribute validations
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'kind'
gem 'u-case'
gem 'activemodel'
gem 'pry'
end
@serradura
serradura / u-observers_101.rb
Created June 29, 2021 12:36
u-observers - 101
# https://github.com/serradura/u-observers/blob/main/README.pt-BR.md
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-observers'
end
class Person
@serradura
serradura / oop.rb
Created May 26, 2021 01:44
POO em Ruby - Relacionado a thread https://t.me/rubybrasil/179048
module Calc
module Outputs
class InMemory
attr_reader :history
def initialize
@history = []
end
def puts(value)
@serradura
serradura / async_http.rb
Last active April 27, 2021 18:26
Async VS sync HTTP requests (using faraday and async.rb)
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'faraday'
gem 'async-http-faraday'
gem 'pry'
end
@serradura
serradura / benchmark.rb
Created March 26, 2021 14:59
Benchmark of basic strict type checking - dry-types VS kind
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'benchmark-ips', '~> 2.8', '>= 2.8.4'
gem 'dry-types', '~> 1.5', '>= 1.5.1'
gem 'kind', '~> 5.4'
end
@serradura
serradura / AES256.rb
Last active December 31, 2022 15:16
AES256
require 'base64'
require 'openssl'
require 'singleton'
require 'forwardable'
class AES256
class Config
class << self
attr_accessor :key
end
@serradura
serradura / application_action_sample.rb
Last active March 4, 2021 16:55
ApplicationAction = ActiveModel::Attributes + Kind::Result
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'kind', git: 'https://github.com/serradura/kind', branch: 'main', require: false
gem 'activemodel', require: 'active_model'
end