Skip to content

Instantly share code, notes, and snippets.

View Envek's full-sized avatar
☮️
Stop the war | Нет войне!

Andrey Novikov Envek

☮️
Stop the war | Нет войне!
View GitHub Profile
@Envek
Envek / test_counter_cache_with_default_scope.rb
Created November 19, 2013 15:19
Self-contained gist for Ruby on Rails bug report
# Activate the gem you are reporting the issue against.
gem 'activerecord', '4.0.1'
require 'active_record'
require 'minitest/autorun'
require 'logger'
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
ActiveRecord::Base.logger = Logger.new(STDOUT)
@Envek
Envek / ruby_enable_gost.patch
Created July 26, 2014 11:57
Enable GOST cryptoalgorithms support in Ruby, patch for Rbenv
--- ext/openssl/ossl.c
+++ ext/openssl/ossl.c
@@ -1048,6 +1048,7 @@ Init_openssl()
*/
/* CRYPTO_malloc_init(); */
/* ENGINE_load_builtin_engines(); */
+ OPENSSL_config(NULL); /* Makes Ruby respect system OpenSSL config */
OpenSSL_add_ssl_algorithms();
OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
@Envek
Envek / dnsmaster-update.sh
Last active August 12, 2017 23:55
Updates A and/or AAAA DNS records in DNS Master provider of Dynamic DNS. Works on Linux and OS X.
#!/bin/sh
usage() {
echo "DNS Master DynDNS update script. Updates A and/or AAAA records with public IPs that you have on your interfaces."
echo "Usage: $0 -h hostname[,hostname…] -u username -p password"
}
if [ $# -eq 0 ]; then usage; exit 1; fi
USERNAME=""
AllCops:
TargetRubyVersion: 2.5
Style/AsciiComments:
Enabled: false
Metrics/LineLength:
Max: 120
@Envek
Envek / Dockerfile
Created February 13, 2019 19:33
Minimal image to be used as Kubernetes default backend as maintenance page
FROM nginx:stable-alpine
COPY default.conf /etc/nginx/conf.d/default.conf
COPY maintenance.html /usr/share/nginx/html/
@Envek
Envek / broadcast.sh
Created June 30, 2011 23:12
Script for launching multicast videostreaming (with logging, restarting and notifications)
#!/bin/bash
#
# Script for managing videostreaming over LAN with logging and GUI notifications.
#
# Dependencies: tstools libnotify-bin
#
# 2012, Novikov «Envek» Andrey. Use it freely under the MIT license.
# Configuration
MULTICASTADDR=224.0.0.1 # Target IP for streaming (from multicast range)
@Envek
Envek / true_money.rb
Last active June 23, 2022 13:43
Example of “true money” PostgreSQL composite type including both amoiunt and currency and how to work with it in Ruby on Rails
# Example of custom PostgreSQL composite type support
# Works with Rails 6.0, also should work with Rails 5.2
# Place this file to config/initializers/
gem "money"
require "money"
# Subclass Money class just to get pretty output in rails console
class TrueMoney < Money
def inspect
@Envek
Envek / yabeda-prometheus-metrics-exporter.rb
Created November 7, 2022 13:03
Example of separate metrics exporter process for Yabeda with Prometheus (Ruby)
#!/usr/bin/env ruby
# Example of how to launch separate process to export all metrics from Ruby processes on the same host/container.
# IMPORTANT:
# You MUST configure Direct File store in official Prometheus Ruby client for this to work.
# See https://github.com/yabeda-rb/yabeda-prometheus#multi-process-server-support
# Example of configuration that should be made for additional process to export all metrics
# Here: export Sidekiq metrics from not worker process. See https://github.com/yabeda-rb/yabeda-sidekiq#configuration
@Envek
Envek / install-apks-from-phone-to-phone.sh
Created December 28, 2022 09:54
If you have an application installed on one device, but for some reason can't install it on another via Play Market (e.g. dumb country restrictions!), then this script will allow you to grab APKs from one phone and install them on another!
#!/bin/sh
usage() {
echo "Android application copy from one device to another via ADB APK files copy (requires USB debugging to be enabled)"
echo "Usage: $0 <application_id> [application_id…]"
echo "Example: $0 jp.naver.line.android"
}
if [ $# -eq 0 ]; then usage; exit 1; fi
if [ "$1" = '--help' ]; then usage; exit 0; fi
@Envek
Envek / timezones.ru.rb
Last active August 19, 2023 19:40
Full list of russian time zones for Ruby on Rails
# Full list of Russian Federation time zones with helper to get this list.
# Place this file in config/initializers/timezones.ru.rb
class ActiveSupport::TimeZone
@country_zones = ThreadSafe::Cache.new
def self.country_zones(country_code)
code = country_code.to_s.upcase
@country_zones[code] ||=
TZInfo::Country.get(code).zone_identifiers.select do |tz_id|