Skip to content

Instantly share code, notes, and snippets.

@rlogwood
rlogwood / react_state_fn_upd_explore.js
Last active February 21, 2019 18:05
Explore React setState idiom of using a function instead of an object to update state
/*
Simple javascript to explore the React stateState function paradigm
node react_state_fn_upd_explore.js
Explore the second form of setState() that accepts a function rather than an
object. This is needed because React can batch state updates and
asynchronous state updates mean you need a function that receives its
current value before using values from it to set the next state
values.
@rlogwood
rlogwood / contact_request.rb
Created May 6, 2021 23:40
Rails ActiveModel::Model Example, an alternative to ActiveRecord when you don't need the DB
# NOTE: this a partial copy of some working code from a working Rails app
# *However* it hasn't been tested on it's own, shown here as an example of
# using ActiveModel::Model as an alternative to ActiveRecord when you don't
# need the DB
class ContactRequest
include ActiveModel::Model
def self.define_sanitized_attr(attr)
define_method(attr) do
@rlogwood
rlogwood / example_controller_strategy_pattern.rb
Last active May 14, 2021 21:08
Rails controller strategy pattern via controller.instance_eval
class MyController < ApplicationController
# ...
def search_all
return unless (@search_phrase = search_phrase_or_redirect)
doc_types = %w[Episode ForumPost Series]
notification_payload = { action: "search_all", search_phrase: @search_phrase,
doc_types: doc_types, pagy_limit: RESULT_PAGE_SIZE }
ActiveSupport::Notifications.instrument('search_render', notification_payload) do
{
"name": "app_name_here",
"private": true,
"engines": {
"yarn": "1.22.10",
"node": "14.16"
},
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
@rlogwood
rlogwood / template.rb
Last active July 16, 2021 23:21
Rails ActiveRecord Example: Book has an Author and Plot, Author has many Books, Plot has many Books
# frozen_string_literal: true
DEFAULT_FIELD_IDS = <<-'RUBY'
<div class="field">
<%= form.label :author_id %>
<%= form.text_field :author_id %>
</div>
<div class="field">
<%= form.label :plot_id %>
@rlogwood
rlogwood / application.html.erb
Last active October 20, 2021 14:49
Example Stimulus Page Reloader Controller for Rails 7
<!DOCTYPE html>
<html>
<head>
<title>RefresherDemo</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
<%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
</head>
@rlogwood
rlogwood / music_controller.js
Last active October 21, 2021 22:03
Managing Stimulus state with a static helper class
import { Controller } from "@hotwired/stimulus"
import { PlaybackManager } from "../helpers/playback_manager";
export default class MusicController extends Controller {
static values = {
previewUrl: String
}
8:37:40 web.1 | started with pid 360745
18:37:40 worker.1 | started with pid 360746
18:37:40 js.1 | started with pid 360747
18:37:40 css.1 | started with pid 360748
18:37:40 css.1 | yarn run v1.22.15
18:37:40 js.1 | yarn run v1.22.15
18:37:40 css.1 | $ sass ./app/assets/stylesheets/application.bootstrap.scss ./app/assets/builds/application.css --no-source-map --load-path=node_modules --watch
18:37:40 js.1 | $ node esbuild.config.js --watch
18:37:40 css.1 | Sass is watching for changes. Press Ctrl-C to stop.
18:37:40 css.1 |
@rlogwood
rlogwood / Gemfile
Last active February 2, 2022 21:08
Example code from RubyConf 2021 talk "Async Ruby" by Bruno Sutic https://www.youtube.com/watch?v=pzpH_ND-CQM
source "https://rubygems.org"
gem 'open-uri'
gem 'async'
gem 'async-http'
gem 'httparty'
gem 'redis'
# gem 'net-ssh'
gem 'sequel'
module BenchIt
require 'benchmark'
ITERATIONS = 100_000
def self.run_benchmark_multi(methods, arg_arrays, iterations=ITERATIONS, verbose=false)
methods.each do |method|
puts "\n#{method} iterations:#{iterations}:\n"
Benchmark.bm do |x|
x.report do
iterations.times do |i|