Skip to content

Instantly share code, notes, and snippets.

@skojin
skojin / local:js
Created September 26, 2017 16:13
bookmarket that open production page on http://localhost:3000
javascript:(function()%7B(function()%7Bvar url %3D window.location.href.split('%2F')%3Burl%5B0%5D %3D 'http%3A'%3Burl%5B2%5D %3D 'localhost%3A3000'%3Bwindow.open(url.join('%2F'))%3B%7D)()%7D)()
@skojin
skojin / strong_params_generator.rb
Created February 12, 2018 16:01
generate strong params hash rule by real request hash
def to_permit_rule(h)
scalar = []
complex = {}
h.each do |k,v|
if v.is_a? Array
complex[k.to_sym] = []
elsif v.is_a? Hash
if v.keys.all?{|vk| vk =~ /\A\d+\z/ }
complex[k.to_sym] = to_permit_rule(v.values.first)
else
@skojin
skojin / Dockerfile
Last active May 5, 2020 12:35
Dockerfile for http://luckyframework.org deployment
FROM crystallang/crystal:0.34.0 as builder
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential \
apt-transport-https curl ca-certificates gnupg2 apt-utils
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
@skojin
skojin / if_jq.sh
Last active September 4, 2020 15:04
test input with jq, if ok then show input, otherwise exit with non 0 exit code
#!/bin/sh
# test input with jq, if ok then show input, otherwise exit with non 0 exit code
# echo '{"success": true}' | jq -e '.success | select(. == true)' # => {"success": true}
# echo '{"success": false}' | jq -e '.success | select(. == true)' # => exit code non 0
input=`cat`;
if echo "$input" | jq -e "$1" > /dev/null ; then
echo "$input"
@skojin
skojin / controller.rb
Created September 16, 2022 13:45
batch set enabled flag from table with checkboxes
current_account.items.update_all(['enabled = (SELECT id IN (?))', Array(params[:ids])])
# same as find_in_batches but with order support
# @usage InOrderedBatches.new(User.where(...), :updated_at, '2015-01-01'.to_time).each{|records| ... }
class InOrderedBatches
def initialize(scope, key, start, batch_size: 1000)
@scope = scope.order("#{key}, id").limit(batch_size)
@key = key
@value = start
@batch_size = batch_size
end