Skip to content

Instantly share code, notes, and snippets.

View armandofox's full-sized avatar

Armando Fox armandofox

View GitHub Profile
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
export PS1="\[\033[1;34m\]\w[\$(parse_git_branch)]$\[\033[0m\] "
@armandofox
armandofox / application.html.erb
Created July 8, 2021 23:31
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title> RottenPotatoes! </title>
<link rel="stylesheet" href="https://getbootstrap.com/docs/4.0/dist/css/bootstrap.min.css">
<%= javascript_include_tag :application %>
<%= csrf_meta_tags %>
</head>
<body>
<div class="container">
@armandofox
armandofox / association1.rb
Created July 8, 2021 23:31
association1.rb
# it would be nice if we could do this:
inception = Movie.where(:title => 'Inception')
alice,bob = Moviegoer.find(alice_id, bob_id)
# alice likes Inception, bob less so
alice_review = Review.new(:potatoes => 4)
bob_review = Review.new(:potatoes => 3)
# a movie has many reviews:
inception.reviews = [alice_review, bob_review]
# a moviegoer has many reviews:
alice.reviews << alice_review
@armandofox
armandofox / application.html.erb
Created July 8, 2021 23:31
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title> RottenPotatoes! </title>
<link rel="stylesheet" href="https://getbootstrap.com/docs/4.0/dist/css/bootstrap.min.css">
<%= javascript_include_tag :application %>
<%= csrf_meta_tags %>
</head>
<body>
<div class="container">
@armandofox
armandofox / association1.rb
Created July 8, 2021 23:31
association1.rb
# it would be nice if we could do this:
inception = Movie.where(:title => 'Inception')
alice,bob = Moviegoer.find(alice_id, bob_id)
# alice likes Inception, bob less so
alice_review = Review.new(:potatoes => 4)
bob_review = Review.new(:potatoes => 3)
# a movie has many reviews:
inception.reviews = [alice_review, bob_review]
# a moviegoer has many reviews:
alice.reviews << alice_review
@armandofox
armandofox / topmovies.rb
Created May 11, 2021 16:39
topmovies.rb
class MoviesController < ApplicationController
def index
@movies = Movie.all
@top_5 = Movie.joins(:reviews).group('movie_id').
order("AVG(potatoes) DESC").limit(5)
end
end
@armandofox
armandofox / topmovies.html.erb
Created May 11, 2021 16:39
topmovies.html.erb
<!-- a cacheable partial for top movies -->
<%- cache('top_moviegoers') do %>
<ul id="topmovies">
<%- @top_5.each do |movie| %>
<li> <%= movie.name %> </li>
<% end %>
</ul>
<% end %>
@armandofox
armandofox / srp_example.rb
Created May 11, 2021 16:39
srp_example.rb
class Moviegoer
attr_accessor :name, :street, :phone_number, :zipcode
validates :phone_number, # ...
validates :zipcode, # ...
def format_phone_number ; ... ; end
def check_zipcode ; ... ; end
def format_address(street, phone_number, zipcode) # data clump
# do formatting, calling format_phone_number and check_zipcode
end
end
@armandofox
armandofox / null_object_fix.rb
Created May 11, 2021 16:39
null_object_fix.rb
class Config
def self.emailer
if email_disabled? then NullMailer else
if has_amiko? then Amiko else MailerMonkey end
end
end
end
class NullMailer
def initialize ; end
def send_email_to(*args) ; true ; end
@armandofox
armandofox / lsp_square_rect_fix.rb
Created May 11, 2021 16:39
lsp_square_rect_fix.rb
# LSP-compliant solution: replace inheritance with delegation
# Ruby's duck typing still lets you use a square in most places where
# rectangle would be used - but no longer a subclass in LSP sense.
class Square
attr_accessor :rect
def initialize(side, top_left)
@rect = Rectangle.new(side, side, top_left)
end
def area ; rect.area ; end
def perimeter ; rect.perimeter ; end