Skip to content

Instantly share code, notes, and snippets.

View dkam's full-sized avatar

Dan Milne dkam

View GitHub Profile
@dkam
dkam / sqlite_search.rb
Last active February 7, 2025 02:20
SQLite Search module
##
# From Mario Alberto Chavez's blog post: https://dev.to/mario_chavez/full-text-search-with-sqlite-and-rails-1cp0
##
module SqliteSearch
extend ActiveSupport::Concern
private def update_search_index
primary_key = self.class.primary_key
table_name = self.class.table_name
@dkam
dkam / uniquify_array.rb
Last active January 20, 2025 11:42
Uniquify Array
# Make an array of hashes contain a unique value for key:
def uniquify_array(array, key)
array.group_by { |item| item[key] }.map do |_, items|
(items.length > 1) ? yield(items) : items.first
end
end
# new_array = uniquify_array(array, :some_key) do |dupes|
# dupes.max_by { |item| item[:updated_at] }
remote_transmitter:
pin: GPIO5
# RF uses a 100% carrier signal
carrier_duty_percent: 100%
button:
- platform: template
name: Light Off Raw
on_press:
- remote_transmitter.transmit_raw:
{
"requests": [{
"to": "\/dsiot\/edge.adp_i?filter=pv,md",
"op": 2
}, {
"op": 2,
"to": "\/dsiot\/edge.adp_d?filter=pv,md"
}, {
"to": "\/dsiot\/edge.adp_f?filter=pv,md",
"op": 2
@dkam
dkam / gist:75b750796faf8dd42af1d5fcccc65544
Last active July 10, 2024 06:40
Kamal Ruby onRails deployment errors
INFO [40a72eff] Finished in 1.109 seconds with exit status 0 (successful).
 ERROR /usr/local/bundle/ruby/3.3.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30: warning: /usr/local/lib/ruby/3.3.0/csv.rb was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add csv to your Gemfile or gemspec.
WARNING:  you don't own a lock of type ExclusiveLock
bin/rails aborted!
ActiveRecord::ConcurrentMigrationError:  (ActiveRecord::ConcurrentMigrationError)

Failed to release advisory lock

#!/usr/bin/ruby
require 'rubygems'
require 'nokogiri'
XSL = <<-EOXSL
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1"/>
<xsl:param name="indent-increment" select="' '"/>
<xsl:template name="newline">
@dkam
dkam / puma_dev_ssl.md
Last active June 10, 2024 01:43
Make PumaDev work with Ruby HTTP Libraries

Puma Dev creates it's own SSL certificate to provide the https://hostname.localhost feature and adds it to your system certificates - but Ruby clients doen't use that. So you need manually add the PumaDev cert to the certs Ruby uses.

For Rails, add a file like config/initializers/puma_dev_client_ssl.rb - but we don't want this in production. Depending on your setup, you may need it in test also.

if Rails.env.development?

  unless File.exist?("/tmp/cert.pem")
    # Create a new cert file including both Puma Dev ssl certificate and Ruby's default certs
@dkam
dkam / set readonly policy on bucket.txt
Last active June 5, 2024 07:00
Set my minio bucket to be public ( anonymous ) readable
mc anonymous set download myalias/mybucket
@dkam
dkam / kv.md
Last active June 4, 2024 08:55
List of key value stores
@dkam
dkam / mp3tom4b.rb
Last active May 17, 2024 00:50
Convert a bunch of mp3 files into an m4b file
#!/usr/bin/env ruby
require 'open3'
require 'tempfile'
##
# Create a single m4b file from multiple mp3 files.
# Finds all *.mp3 files, merges them, in lexigraphical order, creates chapters based on the mp3 files, adds cover.jpg as a cover
## Todo