Skip to content

Instantly share code, notes, and snippets.

View bradgessler's full-sized avatar

Brad Gessler bradgessler

View GitHub Profile
@bradgessler
bradgessler / credentials_controller.rb
Created September 1, 2023 22:09
The basis of a secrets editor that works from Rails. I'd probably ditch the file and instead ask for the secret, which I'd store in a cookie with a 10 min ttl (or something)
class NoPassword::CredentialsController < ApplicationController
before_action :assign_credentials
class Editor < Phlex::HTML
def initialize(credentials:)
@credentials = credentials
end
def template(&)
style do
@bradgessler
bradgessler / Rakefile
Created August 31, 2023 17:54
Setups up repos in `./gems` from the root of a Rails project as local gems. This makes framework development much easier.
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require_relative "config/application"
Rails.application.load_tasks
desc "Set local gems"
task :gems do
Dir["gems/**"].each do |path|
@bradgessler
bradgessler / nopassword.rb
Last active August 31, 2023 17:12
NoPassword II
require "openssl"
require "securerandom"
require "bundler/inline"
gemfile do
gem "anybase"
gem "activesupport", require: "active_support"
gem "rspec", require: "rspec/autorun"
end
@bradgessler
bradgessler / geomatic.rb
Created August 2, 2023 03:52
Dumps the parts of a RubyGem docs into a folder... almost
require "open-uri"
require "rubygems/package"
require "fileutils"
require "pathname"
require "yard"
require "net/http"
class Gemomatic
attr_reader :code_objects
@bradgessler
bradgessler / LSP-tailwindcss.sublime-settings
Created August 1, 2023 04:01
TailwindCSS LSP for Phlex
// Settings in here override those in "LSP-tailwindcss/LSP-tailwindcss.sublime-settings"
{
"enabled": true,
"selector": "source.ruby | source.jsx | source.js.react | source.js | source.tsx | source.ts | source.css | source.scss | source.less | text.html.vue | text.html.svelte | text.html.basic | text.html.twig | text.blade | text.html.blade | embedding.php | text.html.rails | text.html.erb | text.haml | text.jinja | text.django | text.html.elixir | text.html.ngx",
"settings" : {
"tailwindCSS.experimental.classRegex": [
"class:\\s*\"([^\"]*)\""
],
}
@bradgessler
bradgessler / gem-to-sqlite.rb
Created March 17, 2023 21:09
Downloads a gem and dumps its documents into a Sqlite3 file
# gem-to-sqlite.rb
#
# Usage: ruby gem-to-sqlite.rb <gem_name> <gem_version>
# Example: ruby gem-to-sqlite.rb rake 13.0.6
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'yard', '~> 0.9.28'
@bradgessler
bradgessler / Dockerfile
Last active November 4, 2022 04:30
Fly Rails Deploy
# syntax = docker/dockerfile:experimental
# Dockerfile used to build a deployable image for a Rails application.
# Adjust as required.
#
# Common adjustments you may need to make over time:
# * Modify version numbers for Ruby, Bundler, and other products.
# * Add library packages needed at build time for your gems, node modules.
# * Add deployment packages needed by your application
# * Add (often fake) secrets needed to compile your assets
@bradgessler
bradgessler / actionclass.rb
Last active October 25, 2022 08:02
action classes
module Resources
class BaseAction
attr_accessor :params
def before
end
def after
end
@bradgessler
bradgessler / komponent.rb
Created August 18, 2022 16:46
A class-base DSL for Ruby asset components
class Komponent
class << self
attr_reader :css_block, :html_block, :script_block
def css(value=nil ,&block)
@css_block = Proc.new { value || block.call }
end
def html(value=nil ,&block)
@html_block = Proc.new { value || block.call }
@bradgessler
bradgessler / button_component.slim.html
Last active March 8, 2022 17:43
Code I'm using in production to replace Rails form helpers. The benefit over Rails or Simple Form? I can keep my views in my views and my logic in Ruby classes. If you compare with Simple Form, their view code is in an initializer, which requires a reboot for every change. Rails form helpers don't have a great way to let users define views in te…
button.button type=type
= value