Skip to content

Instantly share code, notes, and snippets.

Intermittently coding

Beth Skurrie bethesque

Intermittently coding
Block or report user

Report or block bethesque

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
bethesque / dynamic-left-outer-join.rb
Last active Dec 20, 2019
Trying to achieve a dynamically filtered left outer join AND eager loading
View dynamic-left-outer-join.rb
require 'spec_helper'
require 'sequel'
DATABASE = Sequel::Model.db
DATABASE.drop_table(:orders) rescue nil
DATABASE.drop_table(:order_lines) rescue nil
DATABASE.drop_table(:customers) rescue nil
DATABASE.create_table(:customers) do
bethesque / test.rb
Last active Aug 14, 2019
synchronous message
View test.rb
some_provider.given("a thing", "foo" => "bar")
.and("another thing", "blah" => "blah")
.upon_receiving("some message")
contents: {"the" => "contents"},
metadata: {"some" => "info"})
contents: {"the" => "response"},
metadata: {"some" => "other info"}
bethesque /
Last active Jul 31, 2019
Using pact with providers that have their own providers

Eg. A -> B -> C

A more find grained view of this intergration might go:

|------------------A Codebase------------------||------------------B Codebase------------------||--------C Codebase---...
 A UI -> A Controller -> B Service -> B Client -> B API -> B Controller -> CService -> CClient -> C API etc...  
                                           |---A/B pact------------------------?
                                           |---A/B pact------------------------------------?
bethesque / bethtest.rb
Last active Jan 9, 2018
Making a request to a server with a self signed certificate
View bethtest.rb
require 'openssl'
require 'uri'
require 'net/http'
uri = URI('')
downloaded_cert_path = '/tmp/downloaded_cert.pem'
puts `openssl s_client -showcerts -servername #{} -connect #{}:#{uri.port} </dev/null 2>/dev/null|openssl x509 -text`
command = "openssl s_client -showcerts -servername #{} -connect #{}:#{uri.port} </dev/null 2>/dev/null|openssl x509 -outform PEM > #{downloaded_cert_path}"
puts command
bethesque / caveats.txt
Last active May 5, 2017
Moderately dirty hack to order pact versions by date instead of version in the pact broker
View caveats.txt
This will sort based on the date that the consumer application version resource is created.
If the pact for that version is updated, the sorting will not consider the date of the updated content.
bethesque /
Last active Dec 18, 2015
Ruby pact libraries
View - rpsec specific stuff, top level, executables - standalone, used by javascript, starts up service, listens, writes pact, verification - matching logic, domain objects - pact specification test, people might want version 3 soonish. - standalone package using travelling ruby - this is the task that builds the packages - the javascript DSL that wraps the ruby or standalone mock server.

bethesque /
Last active Nov 30, 2015
DelegatedProperty - flattening model hierarchy - don't expose your model relationships in your form

This allows you do something like:

User =
Address =, :suburb)

class UserForm < Reform::Form

  property :address do
    property :street
bethesque / authorise.rb
Created Sep 14, 2015
How we currently authorise our Trailblazer operations (pre policy support)
View authorise.rb
class Thing::Create < Trailblazer::Operation
def process(params)
validate(params[:referral]) do
authorize(params, model, :create?)
def setup_model!(params)
bethesque / reverse_proxy.rb
Created Jul 8, 2015
Debug pact-provider-proxy
View reverse_proxy.rb
# pact-provider-proxy/vendor/rack-reverse-proxy/lib/rack/reverse_proxy.rb
require 'net/http'
require 'net/https'
require "rack-proxy"
require "rack/reverse_proxy_matcher"
require "rack/exception"
module Rack
class ReverseProxy
bethesque / migrate.rb
Last active Nov 26, 2018
Migrate pacts from one pact broker to another
View migrate.rb
# Note: this does not migrate the tags
require 'faraday'
require 'json'
source_host = 'http://some-pact-broker'
destination_host = 'http://localhost:9292'
latest_pacts_response = JSON.parse(Faraday.get("#{source_host}/pacts/latest").body)
pact_hrefs = latest_pacts_response['pacts'].collect{ | pact | pact['_links']['self'][1]['href'] }
You can’t perform that action at this time.