Skip to content

Instantly share code, notes, and snippets.

@elcortez
elcortez / users_generator.rb
Created November 20, 2022 13:59
Rails - Build a CSV and send it though email
require 'csv'
def generate_users
query = "SELECT first_name, last_name FROM users"
sanitized_query = ActiveRecord::Base.sanitize_sql_array([query])
result = ActiveRecord::Base.connection.execute(sanitized_query).values
csv_string = CSV.generate do |csv|
csv << ["first_name", "last_name"]
result.map { |row| csv << row }
require_relative "animal"
class Warthog < Animal
def talk
"#{name} grunts !"
end
end
require_relative "animal"
class Meerkat < Animal
def talk
"#{name} barks !"
end
end
require_relative "animal"
class Lion < Animal
def talk
"#{name} roars !"
end
def eat(food)
super(food) + ". Law of the jungle!"
require_relative "lion"
require_relative "meerkat"
require_relative "warthog"
my_lion = Lion.new("simba")
timon = Meerkat.new("timon")
pumba = Warthog.new("pumba")
[my_lion, timon, pumba].each do |animal|
class Animal
attr_reader :name
def initialize(name)
@name = name
end
def self.phyla
%w[
Ecdysozoa
require_relative 'building'
require_relative 'butler'
class House < Building
attr_accessor :butler
def initialize(name, width, length, butler_name)
super(name, width, length)
@butler = Butler.new(butler_name, self)
end
require_relative 'building'
require_relative 'butler'
class Castle < Building
attr_accessor :butler
def initialize(name, width, length, butler_name)
super(name, width, length)
@butler = Butler.new(butler_name, self)
end
class Butler
attr_reader :name, :associated_house
def initialize(name, associated_house)
@name = name
@associated_house = associated_house
end
def clean_associated_house
puts "#{associated_house.name} cleaned by #{name} !"
class Building
attr_reader :width, :length
attr_accessor :name
def initialize(name, width, length)
@name = name
@width = width
@length = length
end