Skip to content

Instantly share code, notes, and snippets.

@ayamomiji
ayamomiji / example.html
Created October 16, 2020 02:42
componentWillUnmount/beforeDestroy in alpine.js
<div x-data @remove='console.log($el, "removed")'></div>
@ayamomiji
ayamomiji / listable.rb
Created October 1, 2020 01:14
include module with parameter, a prettier version imo
# adds `acts_as_list` and a `ordered` scope with given scope
# usage:
# include Listable
# include Listable[scope: :user]
module Listable
extend ActiveSupport::Concern
included do
include ListableModule.new
end
class HashSchema
def initialize(schema)
@schema = schema.map { |key, type|
[key, HashSchema.lookup(type)]
}.to_h
end
def cast(params)
params.map { |key, value|
[key, @schema[key] ? @schema[key].cast(value) : value]
@ayamomiji
ayamomiji / list.html
Last active September 18, 2023 16:13
Stimulus example: smart scroll
<div data-controller="smart-scroll"
data-action="smart-scroll:added->smart-scroll#handleAdded
resize->smart-scroll#handleAdded
scroll->smart-scroll#handleScroll">
<div data-controller="smart-scroll-item">
aya: an an
</div>
<div data-controller="smart-scroll-item">
hatate: ni hao
</div>
@ayamomiji
ayamomiji / config_database.yml
Last active February 13, 2017 09:21
Add emoji support for mysql
default: &default
adapter: mysql2
encoding: utf8mb4
charset: utf8mb4
collation: utf8mb4_unicode_ci
# 不考慮重複 key 和無 value 的情況
parseQS = (qs = location.search) ->
object = {}
pairs = qs.substring(1) # 去除前置 ? 字元
.split('&') # 變成一堆 oo=xx 字串
for pair in pairs
[key, value] = pair.split('=')
object[key] = value
Rails.application.config.assets.precompile += %w( ratchicons.eot
ratchicons.woff
ratchicons.ttf
ratchicons.svg )
@ayamomiji
ayamomiji / deploy.rb
Last active October 19, 2021 18:12
capistrano 3: precompile assets on local machine then upload
namespace :deploy do
namespace :assets do
Rake::Task['deploy:assets:precompile'].clear_actions
desc "Precompile assets on local machine and upload them to the server."
task :precompile do
run_locally do
execute 'RAILS_ENV=production bundle exec rake assets:precompile'
end
require 'rack/rewrite'
Rails.application.config.middleware.insert(0, Rack::Rewrite) do
rewrite %r{^/(?!assets|auth|admin)}, '/'
end
@ayamomiji
ayamomiji / slim_template.rb
Created December 4, 2013 16:47
use slim in sprockets
class CustomSlimEngine < Slim::Template
def evaluate(scope, locals, &block)
scope.class_eval do
include Rails.application.routes.url_helpers
include Rails.application.routes.mounted_helpers
include ActionView::Helpers
end
super
end