Skip to content

Instantly share code, notes, and snippets.

@rlogwood
rlogwood / fiber_scheduling_example.rb
Created Mar 2, 2022
Simple demonstration of ruby fiber scheduler
View fiber_scheduling_example.rb
# quick demo of fiber scheduling
# Ruby 3.1.1
# see https://brunosutic.com/blog/ruby-fiber-scheduler
# see https://rubyapi.org/3.0/o/fiber/schedulerinterface
# see https://github.com/bruno-/fiber_scheduler_list
# using a default implementation of fiber_scheduler via
# gem install fiber_scheduler
require 'fiber_scheduler'
View bench_it.rb
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|
@rlogwood
rlogwood / Gemfile
Last active Feb 2, 2022
Example code from RubyConf 2021 talk "Async Ruby" by Bruno Sutic https://www.youtube.com/watch?v=pzpH_ND-CQM
View Gemfile
source "https://rubygems.org"
gem 'open-uri'
gem 'async'
gem 'async-http'
gem 'httparty'
gem 'redis'
# gem 'net-ssh'
gem 'sequel'
View rails stack trace
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 / music_controller.js
Last active Oct 21, 2021
Managing Stimulus state with a static helper class
View music_controller.js
import { Controller } from "@hotwired/stimulus"
import { PlaybackManager } from "../helpers/playback_manager";
export default class MusicController extends Controller {
static values = {
previewUrl: String
}
@rlogwood
rlogwood / application.html.erb
Last active Oct 20, 2021
Example Stimulus Page Reloader Controller for Rails 7
View application.html.erb
<!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 / template.rb
Last active Jul 16, 2021
Rails ActiveRecord Example: Book has an Author and Plot, Author has many Books, Plot has many Books
View template.rb
# 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 %>
View package.json
{
"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 / example_controller_strategy_pattern.rb
Last active May 14, 2021
Rails controller strategy pattern via controller.instance_eval
View example_controller_strategy_pattern.rb
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
@rlogwood
rlogwood / contact_request.rb
Created May 6, 2021
Rails ActiveModel::Model Example, an alternative to ActiveRecord when you don't need the DB
View contact_request.rb
# 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