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_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 / nano_case.rb
Last active March 30, 2023 12:36
NanoCase: Abstraction inspired by the u-case gem (compatible with old and new Rubies)
class NanoCase
class Result
UNDEFINED = :undefined
attr_reader :type, :data
def initialize(type, data)
@type = type
@data = data
end
@serradura
serradura / bench_01.rb
Created March 6, 2023 17:48
Benchmarks instance versus singleton methods
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'benchmark-ips', '~> 2.11'
end
class Calc
def initialize(a, b)
@serradura
serradura / 01_factory_collection_filter.rb
Created February 23, 2023 17:22
Abstractions to filter an array of hashes in Ruby
class FactoryCollectionFilter
def initialize(config)
@config = config || {}
end
def call(filters: {}, data: [])
return data if filters.empty?
filters.reduce(data) do |filtered, (filter, value)|
filter_fn = @config[filter]
@serradura
serradura / oop.rb
Last active February 10, 2023 14:18
Código produzido na live "A verdadeira Orientação a Objetos" em 09/02/2023
####################################
# Pilares da Orientação a Objetos: #
####################################
# 👍 Abstração. | >
# 👍 Encapsulamento | > > Composição 🙌
# 👍 Polimorfismo | >
# 👎 Herança
class AssemblyLine
CARS_PRODUCED_PER_HOUR = 221.0
def self.calculate_cars_per_hour(speed)
speed * CARS_PRODUCED_PER_HOUR
end
def self.calculate_success_rate(speed)
case speed
when 1..4 then 1
@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 / admin-product.rb
Created December 23, 2016 00:32 — forked from ottodranik/admin-product.rb
Example: Use Acts-As-Taggable-On gem with Active-Admin and rails observers
ActiveAdmin.register Product do
permit_params :name, :category_id, :description, :text, :slug, :in_slider, :tag_ids => []
filter :category
filter :base_tags
filter :name
filter :text
filter :created_at
filter :updated_at
@serradura
serradura / pub_sub.rb
Created May 11, 2022 15:18
Implementação do pub/sub na mão equivalente a gem Wisper
module Susurro
def subscribe(handler)
subscribers << {name: nil, handler: handler}
self
end
def on(event_name, &handler)
subscribers << {name: event_name, handler: handler}