Skip to content

Instantly share code, notes, and snippets.

Avatar
🏠
Creating the future

Tim Kretschmer krtschmr

🏠
Creating the future
View GitHub Profile
@krtschmr
krtschmr / gist:06b84948783617cd345ed2c34ad5d8ee
Created Oct 9, 2019
circle-ci integration rails 6, mysql 5.7, influx, redis, rspec + code covereage
View gist:06b84948783617cd345ed2c34ad5d8ee
version: 2 # use CircleCI 2.0
jobs: # a collection of steps
build: # runs not using Workflows must have a `build` job as entry point
parallelism: 1 # run three instances of this job in parallel
# branches:
# only:
# - master
docker: # run the steps with Docker
- image: circleci/ruby:2.6.3
environment: # environment variables for primary container
View gist:9e7b297763901efbe6cf02b4cb13ae5f
module QrCodeHelper
def qr_code(string, options={})
base_size = options.fetch(:width, 200)
@qr_logo = options.fetch(:logo, "qr_code_logo.png")
@qr_logo_size = options.fetch(:logo_size, 48)
level = options.fetch(:level, :l)
@qr_data = RQRCode::QRCode.new(string, level: level).to_s.split("\n").collect(&:chars)
@qr_size = @qr_data.size
View check_hashrate.py
#!/usr/bin/python
import os
import sys
import time
import datetime
import commands
import json
gDebugMode = 1
gLogFile = "/home/ethos/gpu_hashrates.log"
@krtschmr
krtschmr / monero_wallet.rb
Created Sep 27, 2017
Monero::Wallet to access Monero-Wallet-RPC via ruby
View monero_wallet.rb
# gem "money"
Money::Currency.register({ :priority => 1, :iso_code => "xmr", :iso_numeric => "846", :name => "Monero", :symbol => "XMR", :subunit => "", :subunit_to_unit => 1000000000000, :decimal_mark => ".", :thousands_separator => ""})
class XMR
def self.new(amount); Money.new(amount, :xmr); end
def to_s; Money.new(amount, :xmr).format; end
end
class Monero::Wallet
@krtschmr
krtschmr / sonoff.rb
Created Sep 12, 2017
controll a sonoff-tasmota device via ruby
View sonoff.rb
# Free to use. if you modify it, pls let me know, i might need your code aswell :-)
# github: krtschmr
# tim@krtschmr.de
# USAGE
# Straightforward
# Sonoff.on!("192.168.1.53")
# Sonoff.off!("192.168.1.53")
@krtschmr
krtschmr / rails_friendship_and_blocklist.rb
Last active Apr 5, 2020
a great way to implement friendship AND blocklists for a rails-application. including specs for minitest.
View rails_friendship_and_blocklist.rb
class User
has_many :relations, class_name: "User::Relation"
has_many :friends,-> { where user_relations: {type: :friendship, state: :confirmed }}, through: :relations
has_many :pending_friendships,-> { where user_relations: {type: :friendship, state: :pending }}, through: :relations, source: :friend
has_many :blocked_users,-> { where user_relations: {type: :block }}, through: :relations, source: :friend
def request_frienship(friend)
raise Relation::ForeverAlone if friend == self
raise Relation::AlreadyConfirmed if friend_with?(friend)
raise Relation::AlreadyRequestedFriendship if pending_friend_request?(friend)
@krtschmr
krtschmr / need_admin_approval.rb
Last active Oct 4, 2019
Extension for ActiveRecord to make any changes for an objects attributes protected and create a seperate ChangeRequest which needs to be approved
View need_admin_approval.rb
# usage
# your model
# need_admin_approval fields: [:name, :description], if: :published?, unless: :trusted_user?
module NeedAdminApproval
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
View gist:8bdcb2a8f7c3d08ee7b7
before_validation do
self.site_id = 1
self.username=Devise.friendly_token.first(4)
self.slug = Devise.friendly_token.first(4)
self.email = "#{Devise.friendly_token.first(4)}@ficken.de"
generated_password = Devise.friendly_token.first(8)
self.password = generated_password
self.password_confirmation = generated_password
end
View .rb
require "titlefy/version"
module Titlefy
# call from your controller (mostly ApplicationController)
def titlefy
send :include, InstanceMethods
end
module InstanceMethods
You can’t perform that action at this time.