Skip to content

Instantly share code, notes, and snippets.

View paul's full-sized avatar

Paul Sadauskas paul

View GitHub Profile
class Conductor
include ActiveModel::Conversion
extend ActiveModel::Naming
include ActiveModel::Validations
class_attribute :object_names
def self.presents(*object_names)
self.object_names = object_names
object_names.each do |object_name|
# Auto-correct files that get generated
g.after_generate do |files|
parsable_files = files.filter { |file| File.exist?(file) && file.end_with?(".rb") }
unless parsable_files.empty?
system("bundle", "exec",
"rubocop",
"--autocorrect-all",
"--fail-level=E",
"--format=quiet",
*parsable_files,
class Foo
class_eval <<-EOS, __FILE__, __LINE__
def bar=(*args, &block)
puts args.inspect
end
EOS
end
Foo.new.bar= 1
@paul
paul / async.rb
Created December 25, 2018 04:05
Implementations of useful step adapters for dry-transaction
# frozen_string_literal: true
module Tesseract
module Transaction
module Steps
# Executes the step in a background job. Argument is either an ActiveJob
# or another Transaction (or anything that implements `#perform_later`.
#
# If the provided transaction implements a `validate` step, then that
# validator will be called on the input before the job is enqueued. This
@paul
paul / refinement_inheritance.rb
Created April 6, 2015 17:23
Ruby Refinement Inheritance
module MyExt
refine String do
def foo
"foo"
end
end
end
class Parent
SettingsSchema = Dry::Schema.JSON do
optional(:custom_object).hash do
required(:active).filled(:bool)
optional(:entity_name).maybe(:string)
end
end
module Macros
def self.included(validator)
validator.register_macro(:custom_object_entity_name) do
@paul
paul / results.txt
Created December 19, 2009 23:34
Performance of DataMapper & ActiveRecord .new, no database access
# 1.8.7
| Ruby Class | Hash Model | Datapathy #new | Datapathy #new_from_attributes | DM 0.10.2 | AR 3.0.pre |
-------------------------------------------------------------------------------------------------------------------------------------------
#new (no attributes) x100000 | 0.562 | 0.348 | 0.534 | 0.669 | 0.478 | 10.931 |
#new (3 attributes) x100000 | 0.362 | 0.383 | 1.596 | 0.539 | 16.030 | 28.158 |
# 1.9.1
| Ruby Class | Hash Model | Datapathy #new | Datapathy #new_from_attributes | DM 0.10.2 | AR 3.0.pre |
-------------------------------------------------------------------------------------------------------------------------------------------
#new (no attributes) x100000 | 0.281 | 0.216 | 0.231 | 0.302 | 0.294 | 10.477 |
@paul
paul / 1.migration_utils.rb
Last active July 24, 2021 12:49
Helpers to work with Enum fields in Postgres and ActiveRecord. Companion code to http://blog.theamazingrando.com/posts/postgres-enums-in-rails.html
# frozen_string_literal: true
module MigrationUtils
module CreateEnum
# :reek:TooManyStatements :reek:NestedIterators
def create_enum(name, values)
reversible do |dir|
dir.up do
say_with_time "create_enum(:#{name})" do
suppress_messages do
@paul
paul / wiki_toc.yml
Created September 18, 2020 22:43
Update wiki pages with Table of Contents (using tocer gem) automatically when the wiki changes
# .github/workflows/wiki_toc.yml
name: Update wiki table of contents
on:
- gollum
jobs:
run:
runs-on: ubuntu-latest
Nov 26 03:02:16 logsnarf-1 falcon[20041]: 3m17s debug: #<Async::Reactor:0x1a302b8 (running)> [pid=20043] [2019-11-26 03:02:16 +0000]
Nov 26 03:02:16 logsnarf-1 falcon[20041]: | @ready = [] @running = []
Nov 26 03:02:16 logsnarf-1 falcon[20041]: 3m17s debug: #<Async::Reactor:0x1a302b8 (running)> [pid=20043] [2019-11-26 03:02:16 +0000]
Nov 26 03:02:16 logsnarf-1 falcon[20041]: | Selecting with 1 children with interval = infinite...
Nov 26 03:02:16 logsnarf-1 falcon[20041]: 3m17s debug: #<Async::Reactor:0x1a301dc (running)> [pid=20044] [2019-11-26 03:02:16 +0000]
Nov 26 03:02:16 logsnarf-1 falcon[20041]: | @ready = [] @running = []
Nov 26 03:02:16 logsnarf-1 falcon[20041]: 3m17s debug: #<Async::Reactor:0x1a301dc (running)> [pid=20044] [2019-11-26 03:02:16 +0000]
Nov 26 03:02:16 logsnarf-1 falcon[20041]: | Selecting with 1 children with interval = infinite...
Nov 26 03:02:16 logsnarf-1 falcon[20041]: 3m18s debug: #<Async::Reactor:0x1a30100 (running)> [pid=20045] [2019-11-26 03:02:16 +0000]
Nov 26 0