Skip to content

Instantly share code, notes, and snippets.

@sinsoku
sinsoku / Dockerfile
Created August 16, 2020 06:05
An image to edit rails credentials
# build:
# $ docker build -t rails_cred .
#
# usage:
# $ docker run -it --rm \
# -e RAILS_MASTER_KEY=$RAILS_MASTER_KEY \
# -v `pwd`/config/credentials.yml.enc:/app/config/credentials.yml.enc \
# -v `pwd`/config/credentials:/app/config/credentials \
# rails_cred
# bad
class A
def cool_calc(b)
b.foo + b.bar * 2
end
end
# good
class B
def cool_value
enum = Enum.new(:a, :b, :c)
status = :b
# pattern 1
enum.case status do
_when(:a) do
p :a
end
_when :b do
@sinsoku
sinsoku / case_match.rb
Last active June 23, 2020 14:52
A gem for finding non-exhaustive case statements.
module CaseMatch
class Error < StandardError; end
class Case
EMPTY_BLOCK = -> {}
def initialize(obj, cases)
@obj = obj
@cases = cases
@values = []
@sinsoku
sinsoku / enumerator_pipeline.rb
Last active May 7, 2020 17:31
`map { |x| bar(foo(x)) }` to `map > :foo >> :bar`
require 'binding_of_caller'
module EnumeratorPipeline
class Builder
def initialize(name)
@callbacks = []
@callbacks << binding.of_caller(1).method(name)
end
def >>(name)
@sinsoku
sinsoku / main.rs
Created March 26, 2020 17:14
I cannot build main.rs that includes `Option<R: BufRead>`. orz
use std::io::{self, Empty, BufRead, Write, Cursor};
fn read_input<R, W>(source: Option<R>, mut writer: W) -> String
where R: BufRead, W: Write
{
write!(&mut writer, "input: ").unwrap();
writer.flush().unwrap();
let mut input = String::new();
match source {
@sinsoku
sinsoku / state_sample.rb
Created August 4, 2019 07:01
state sample
# app/models/article.rb
class Article < ApplicationRecord
has_many :article_publications
scope :draft, -> { left_joins(:article_publications).where(article_publications: { id: nil }) }
scope :published, -> { joins(:article_publications) }
end
# app/models/article_publication.rb
class ArticlePublication < ApplicationRecord
@sinsoku
sinsoku / ar_test.rb
Last active August 3, 2019 15:37
AR test
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gem "rails", github: "rails/rails"
<% A.foo(@user) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% end %>
resource "aws_db_instance" "db" {
count = "${terraform.workspace == "default" ? 1 : 0}"
}
resource "aws_rds_cluster" "db" {
count = "${terraform.workspace == "default" ? 0 : 1}"
}
locals {
db_endpoint = "${terraform.workspace == "default" ? aws_db_instance.db.endpoint : aws_rds_cluster.db.endpoint}"