Skip to content

Instantly share code, notes, and snippets.

@rzane
rzane / ts-expect-error.rb
Created March 27, 2025 12:06
Capture and ignore all typescript errors
# Usage:
# $ npm install -g @aivenio/tsc-output-parser
# $ ruby ts-expect-error.rb
require 'json'
def fix_errors
puts "Running the TypeScript compiler to find errors..."
errors = JSON.parse(`$(yarn bin tsc) --noEmit | tsc-output-parser`)
changes = Hash.new { |h, k| h[k] = Set.new }
@rzane
rzane / examples-to-lines.rb
Created March 6, 2025 19:49
Convert RSpec failed examples.txt to line numbers
require 'bundler/setup'
require 'rspec'
$LOAD_PATH.unshift(File.join(Dir.pwd, 'spec'))
ids = `grep '| failed' spec/examples.txt | sed 's/|.*//'`.lines(chomp: true).map(&:rstrip)
# Require each file
ids.each { |failure| require_relative failure.split('[')[0] }
@rzane
rzane / unused_routes.rb
Last active November 1, 2024 13:43
Detect unused routes (Rails 7.0)
# frozen_string_literal: true
# Usage: bin/rails runner unused_routes.rb
def action_exists?(controller, action)
controller_class = "#{controller.camelize}Controller".constantize
controller_class.public_instance_methods.include?(action.to_sym)
rescue NameError
false
end
@rzane
rzane / Gemfile
Last active August 5, 2024 21:15
# frozen_string_literal: true
source "https://rubygems.org"
gem "cuprite", "~> 0.15.1"
gem "sinatra", "~> 4.0"
gem "puma", "~> 6.4"
gem "minitest", "~> 5.24"
@rzane
rzane / polymorphic_has_one_primary_key.rb
Created June 23, 2023 15:23
ActiveRecord polymorphic associations don't accept a custom primary key?
require 'bundler/inline'
require 'minitest/autorun'
gemfile true do
source 'https://rubygems.org'
gem 'activerecord', require: 'active_record'
gem 'sqlite3'
end
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
@rzane
rzane / deprecations.rb
Created October 31, 2022 20:46
Deprecate Rails path helpers
deprecator = ActiveSupport::Deprecation.new('in the future', 'B4B')
deprecator.behavior = ActiveSupport::Deprecation.behavior
ActiveSupport::Deprecation.deprecate_methods(
Rails.application.routes.named_routes.path_helpers_module,
:foo_path,
:bar_path,
deprecator: deprecator
)
@rzane
rzane / controller_spec.rb
Created June 16, 2022 20:31
Writing a controller spec outside of a Rails application
require 'spec_helper'
require 'rails'
require 'action_view'
require 'action_controller'
require 'rspec/rails'
class TestApplication < Rails::Application
end
RSpec.describe 'example', type: :controller do
@rzane
rzane / print-fields.rb
Last active December 14, 2021 17:02
Print fields used by GraphQL query
require "set"
require "graphql"
require "json"
SCHEMA_PATH = ENV.fetch("SCHEMA") do
abort "Run with SCHEMA=<path-to-schema.json> and try again."
end
SCHEMA = JSON.parse(File.read(SCHEMA_PATH))
REFERENCES = Hash.new do |h, t|
@rzane
rzane / convert.rb
Last active July 13, 2021 18:06
Convert to TypedDocumentNode
# Convert your codebase to use TypedDocumentNode. It's not perfect, but
# it does a pretty decent job. You'll want to review the changes manually.
# Usage: ruby convert.rb [...GLOBS]
# Example: ruby convert.rb "src/**/*.{ts,tsx}"
require "set"
def convert_import(line)
parts = line.scan(/use(\w+)(Query|Mutation)/)
return [line] if parts.empty?
@rzane
rzane / gem.md
Last active May 4, 2022 20:49
Actions

Gem

Build

name: Build
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest