← Extractions

Webmock unmocked — Bartosz Blimke at wroclove.rb 2024

Bartosz Blimke, sole maintainer of the WebMock Ruby gem, presents the gem's features, explains its internal architecture (adapters, monkey-patched HTTP client classes, global stub and callback registries), and closes with a tribute to the New Bamboo team where he created it. Q&A covers contract testing and tracking HTTP-client library changes.

Model
claude-opus-4-7
Ingestion
3d479920
Input tokens
492,280
fresh
386,980
cached
98,859
cache write
6,441
Output tokens
12,634
Duration
215.5s
Roundtrips
10
Tool calls
26
Cost
$0.00
Nodes/edges extracted
15 / 31
Read set (nodes/edges)
159 / 2

Nodes (15)

create Net::HTTP tool
kind (empty) tool
name (empty) Net::HTTP
slug (empty) net-http
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Ruby standard library HTTP client. The only HTTP client supported by FakeWeb; called out in the talk as having a comp...
short_description (empty) Ruby standard-library HTTP client.
create New Bamboo company
kind (empty) company
name (empty) New Bamboo
slug (empty) new-bamboo
attrs (empty) {"industry" => "Ruby consultancy", "location" => "London, UK"}
description (empty) London-based Ruby development company where Bartosz Blimke worked in 2009. Self-described team of very passionate dev...
short_description (empty) London Ruby consultancy where WebMock was created during a company hackathon.
create Stub Execute Verify concept
kind (empty) concept
name (empty) Stub Execute Verify
slug (empty) stub-execute-verify
attrs (empty) {"category" => "pattern"}
description (empty) Testing paradigm WebMock borrows from the Java Mockito framework. The stubbing phase (declaring fake responses) is ke...
short_description (empty) Testing paradigm that separates stubbing from verification into distinct phases.
create WebMock tool
kind (empty) tool
name (empty) WebMock
slug (empty) webmock
attrs (empty) {"created" => "2009", "license" => "open-source", "category" => "library", "language" => "Ruby", "downloads" => "250M...
description (empty) Ruby gem created by Bartosz Blimke during a one-day company hackathon at New Bamboo in 2009 to address his own needs ...
short_description (empty) Ruby gem for stubbing HTTP requests and verifying HTTP calls in tests.
create FakeWeb tool
kind (empty) tool
name (empty) FakeWeb
slug (empty) fakeweb
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Ruby gem for stubbing HTTP requests that predated WebMock. Bartosz Blimke tried to use FakeWeb but found its request-...
short_description (empty) Earlier Ruby HTTP stubbing gem that predated WebMock.
create VCR tool
kind (empty) tool
name (empty) VCR
slug (empty) vcr
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Ruby gem for recording HTTP requests and replaying them later in tests. Uses WebMock's request callbacks under the ho...
short_description (empty) Ruby gem that records HTTP interactions and replays them in tests.
create Mockito tool
kind (empty) tool
name (empty) Mockito
slug (empty) mockito
attrs (empty) {"category" => "framework", "language" => "Java"}
description (empty) Java framework for testing. Bartosz Blimke borrowed Mockito's stub–execute–verify paradigm when designing WebMock, wh...
short_description (empty) Java mocking framework for unit tests.
create HTTP gem tool
kind (empty) tool
name (empty) HTTP gem
slug (empty) http-gem
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Ruby HTTP client gem (http.rb). Blimke contrasts its clean DSL with Net::HTTP's complicated interface as a reason to ...
short_description (empty) Ruby HTTP client gem with a chainable DSL for making requests.
update Bartosz Blimke person
attrs (empty) {"location" => "Wrocław, Poland", "ruby_since" => "2006", "nationality" => "Polish", "employer_history" => "New Bambo...
description Conference speaker. Polish Ruby developer, living in Wrocław and working remotely since before it was trendy. Writing software for over 2...
short_description Conference speaker. Polish Ruby developer; creator and sole maintainer of the WebMock gem.
update Webmock unmocked talk
attrs {"type" => "talk"} {"date" => "2024-03-22", "type" => "talk"}
description Talk at wroclove.rb 2024. Bartosz Blimke's wroclove.rb 2024 talk — his second public presentation about WebMock (the first was in London 15 yea...
short_description Talk at wroclove.rb 2024. Bartosz Blimke's wroclove.rb 2024 talk on WebMock features and internals.
create Publish solutions that work for you takeaway
kind (empty) takeaway
name (empty) Publish solutions that work for you
slug (empty) publish-solutions-that-work-for-you
attrs (empty) {"type" => "recommendation"}
description (empty) Encouragement Blimke echoed from another speaker at the conference: when you have a solution that works for you, publ...
short_description (empty) If you have a solution that works for you, publish it — others may find it useful.
create Enable WebMock on legacy apps takeaway
kind (empty) takeaway
name (empty) Enable WebMock on legacy apps
slug (empty) enable-webmock-on-legacy-apps
attrs (empty) {"type" => "recommendation"}
description (empty) One of the first things to do when taking over a legacy Ruby application: import WebMock and enable it. From then on,...
short_description (empty) Drop WebMock into a legacy Ruby app to catch unexpected third-party HTTP calls.
create Stub third-party APIs to unblock development takeaway
kind (empty) takeaway
name (empty) Stub third-party APIs to unblock development
slug (empty) stub-third-party-apis-to-unblock-development
attrs (empty) {"type" => "recommendation"}
description (empty) WebMock lets teams start building against a third-party API before they have access to it. Read the documentation/spe...
short_description (empty) Use WebMock stubs to build and demo features before the third-party API is available.
create WebMock contract testing integration question
kind (empty) question
name (empty) WebMock contract testing integration
slug (empty) webmock-contract-testing-integration
attrs (empty) {"answer_summary" => "No built-in contract testing; scope/validation of stubs is a known limitation because WebMock u...
description (empty) Audience member thanked Blimke for WebMock (which they had used since the first version) and asked whether he has con...
short_description (empty) Does WebMock support contract testing so mocks invalidate when upstream APIs change?
create Tracking HTTP client library changes question
kind (empty) question
name (empty) Tracking HTTP client library changes
slug (empty) tracking-http-client-library-changes
attrs (empty) {"answer_summary" => "No automated system. WebMock's test suite runs against latest gem versions, so CI surfaces regr...
description (empty) Audience asked how Blimke follows changes in the HTTP-client libraries WebMock cooperates with. Answer: WebMock's Gem...
short_description (empty) How does WebMock keep up with changes in the HTTP-client libraries it monkey-patches?

Edges (31)

update Bartosz BlimkeauthoredWebmock unmocked
context (empty) Speaker and sole maintainer of WebMock presenting his second-ever WebMock talk at wroclove.rb 2024.
update Webmock unmockedpresented_atwroclove.rb 2024
context (empty) Talk delivered as the final slot of wroclove.rb 2024 on 2024-03-22.
create Bartosz Blimkeattendedwroclove.rb 2024
context (empty) Speaker at the conference; also references seeing other talks during the event.
relation (empty) attended
source_node_id (empty) 5ab52188-4211-4e8f-991f-9556865ff494
target_node_id (empty) 748e0524-a102-41d4-97dc-575881583d91
create Bartosz Blimkeworks_onWebMock
attrs (empty) {"role" => "author and sole maintainer"}
context (empty) Author and single maintainer of WebMock for 15 years.
relation (empty) works_on
source_node_id (empty) 5ab52188-4211-4e8f-991f-9556865ff494
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create Bartosz Blimkeworks_atNew Bamboo
attrs (empty) {"since" => "2009"}
context (empty) Worked at New Bamboo in London in 2009 when he created WebMock during a company hackathon.
relation (empty) works_at
source_node_id (empty) 5ab52188-4211-4e8f-991f-9556865ff494
target_node_id (empty) 1af87c59-8a04-4f18-8f3c-5e58cbad4ddd
create Webmock unmockedaboutWebMock
context (empty) Entire talk covers WebMock's features and internal architecture.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create Webmock unmockedaboutFakeWeb
context (empty) Blimke explains he tried FakeWeb first but its matching capabilities and Net::HTTP-only scope motivated him to create...
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) bd7d288e-85a6-4587-8488-71c2782000d6
create Webmock unmockedaboutVCR
context (empty) VCR is mentioned as a gem that records HTTP requests and uses WebMock's callbacks under the hood.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 2bfac9e2-008e-45e4-9477-b001da71cd49
create Webmock unmockedaboutMockito
context (empty) WebMock's stub–execute–verify paradigm is borrowed from the Java Mockito framework.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) fb32d0c7-efa3-42f3-81a4-7ffcd7d05857
create Webmock unmockedaboutStub Execute Verify
context (empty) The talk explains how WebMock separates stubbing from verification — the stub–execute–verify paradigm.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 1945f528-f4dd-4d29-9bd6-94299f39ff1f
create Webmock unmockedaboutMonkey Patching
context (empty) WebMock adapters work by subclassing HTTP-client classes and monkey-patching request handling; Blimke calls monkey pa...
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 055158a7-01d0-407c-b292-1ce630c6341a
create Webmock unmockedaboutTest Driven Development
context (empty) Blimke recommends WebMock for TDD — define the expected HTTP behavior in the test first, worry about the HTTP client ...
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 1c2ff90e-39e6-496e-b94d-6234d545033e
create Webmock unmockedaboutHTTP gem
context (empty) Talk example contrasts Net::HTTP's complicated interface with the HTTP gem's clean DSL when rewriting a test under We...
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 6172b152-1074-4ee3-9044-55e521d3f52b
create Webmock unmockedaboutNet::HTTP
context (empty) Talk mentions Net::HTTP as FakeWeb's only supported client and as the verbose legacy client that WebMock lets you swa...
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 706c33c7-d3a7-42b1-8809-f86d936666ec
create Webmock unmockedaboutcurl
context (empty) Talk notes WebMock can replay raw responses previously recorded with curl.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) c24eebf8-1c00-4d2a-bdc0-28eddc3eb4d1
create Webmock unmockedaboutNew Bamboo
context (empty) Talk closes with a personal tribute to the New Bamboo team ('Bambinos') where WebMock was created.
relation (empty) about
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 1af87c59-8a04-4f18-8f3c-5e58cbad4ddd
create WebMockrelated_toFakeWeb
context (empty) WebMock was inspired by and designed to overcome the limitations of FakeWeb (limited request matching, Net::HTTP only).
relation (empty) related_to
source_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
target_node_id (empty) bd7d288e-85a6-4587-8488-71c2782000d6
create VCRusesWebMock
context (empty) VCR uses WebMock's request callbacks under the hood to record HTTP traffic.
relation (empty) uses
source_node_id (empty) 2bfac9e2-008e-45e4-9477-b001da71cd49
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create WebMockrelated_toMockito
context (empty) WebMock's stub–execute–verify paradigm was borrowed from Mockito.
relation (empty) related_to
source_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
target_node_id (empty) fb32d0c7-efa3-42f3-81a4-7ffcd7d05857
create Bartosz Blimkehas_skillRuby
attrs (empty) {"level" => "expert"}
context (empty) Professional Ruby developer since 2007; previously a Java developer.
relation (empty) has_skill
source_node_id (empty) 5ab52188-4211-4e8f-991f-9556865ff494
target_node_id (empty) c7f25b33-06c9-460e-aca7-fe993123ebee
create Andrzej Krzywdarelated_toBartosz Blimke
context (empty) In 2006, Andrzej Krzywda introduced Bartosz Blimke (then a Java developer) to Ruby.
relation (empty) related_to
source_node_id (empty) 337ffd2c-5847-4b23-9ef7-e8f70aa4c66a
target_node_id (empty) 5ab52188-4211-4e8f-991f-9556865ff494
create Publish solutions that work for youfrom_talkWebmock unmocked
context (empty) Blimke urged the audience to publish solutions that work for them, using WebMock as his example.
relation (empty) from_talk
source_node_id (empty) adfca79e-c6b2-4557-b2cb-49321d88d897
target_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
create Enable WebMock on legacy appsfrom_talkWebmock unmocked
context (empty) Recommendation from the talk for taking over legacy Ruby apps.
relation (empty) from_talk
source_node_id (empty) 050c412d-600e-40f7-b72f-7381370c0edc
target_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
create Stub third-party APIs to unblock developmentfrom_talkWebmock unmocked
context (empty) Pattern Blimke described for building and demoing features before third-party API access is granted.
relation (empty) from_talk
source_node_id (empty) 8883e78f-90b3-48ed-962b-306f8ad6b6f4
target_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
create Enable WebMock on legacy appsaboutWebMock
context (empty) Takeaway specifically about using WebMock as a safety net on legacy applications.
relation (empty) about
source_node_id (empty) 050c412d-600e-40f7-b72f-7381370c0edc
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create Stub third-party APIs to unblock developmentaboutWebMock
context (empty) Takeaway is about using WebMock stubs as a stand-in for unreleased or unavailable third-party APIs.
relation (empty) about
source_node_id (empty) 8883e78f-90b3-48ed-962b-306f8ad6b6f4
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create WebMock contract testing integrationasked_atWebmock unmocked
context (empty) Asked during Q&A at the end of Blimke's wroclove.rb 2024 talk.
relation (empty) asked_at
source_node_id (empty) 4309cff0-ca97-4b5a-9507-95ef827b24dd
target_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
create Tracking HTTP client library changesasked_atWebmock unmocked
context (empty) Asked during Q&A at the end of Blimke's wroclove.rb 2024 talk.
relation (empty) asked_at
source_node_id (empty) ca467cc2-caea-4a8e-bf47-233da53e0db0
target_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
create WebMock contract testing integrationaboutWebMock
context (empty) Question asks whether WebMock supports contract testing.
relation (empty) about
source_node_id (empty) 4309cff0-ca97-4b5a-9507-95ef827b24dd
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create Tracking HTTP client library changesaboutWebMock
context (empty) Question asks how WebMock keeps up with changes in the HTTP-client libraries it monkey-patches.
relation (empty) about
source_node_id (empty) ca467cc2-caea-4a8e-bf47-233da53e0db0
target_node_id (empty) 39888955-d08a-430e-baf1-5a3e5150c1ad
create Webmock unmockedrelated_toOne machine please, make it Turing
context (empty) Blimke references David Halasz's talk the day before about formal languages as inspiration for adding a university sl...
relation (empty) related_to
source_node_id (empty) 6a6dec59-7cea-47e4-9f06-56a980cfe50a
target_node_id (empty) 5f6c6de7-3590-4026-92bb-6ef9cea6b7f4

Read set

159 nodes

talk Webmock unmocked search_nodes+get_node_edges concept Mock Third-Party Services Locally search_nodes tool Mimic search_nodes tool Capybara search_nodes tool Requestly search_nodes tool Faker search_nodes tool FactoryBot search_nodes concept Time.current Testing Trap search_nodes concept Stubs over Mocks search_nodes question Diagnostic Substitutes Are Not Mock Objects search_nodes person Bartosz Blimke search_nodes+get_node_edges company Planuj Wesele search_nodes concept AI Agent search_nodes person Adam Okoń search_nodes takeaway Name Things To Find Their Properties search_nodes concept GraphQL max_depth search_nodes tool RealtimeBoard search_nodes project Check search_nodes concept Retrieval Augmented Generation search_nodes tool Speaker Deck search_nodes event wroclove.rb 2023 search_nodes+list_nodes_by_kind event wroclove.rb 2019 search_nodes+list_nodes_by_kind event wroclove.rb 2018 search_nodes+list_nodes_by_kind event wroclove.rb 2024 search_nodes+list_nodes_by_kind event wroclove.rb 2025 search_nodes+list_nodes_by_kind event wroclove.rb 2022 search_nodes+list_nodes_by_kind event wroclove.rb 2026 search_nodes+list_nodes_by_kind talk Performance Panel wroclove.rb 2024 search_nodes talk Building LLM powered applications in Ruby search_nodes talk How wroclove.rb impacts developers and companies search_nodes event Advent of Code list_nodes_by_kind event Brighton Ruby list_nodes_by_kind event EmberConf list_nodes_by_kind event Eventide Summit 2023 list_nodes_by_kind event Hacktoberfest list_nodes_by_kind event KanDDDinsky list_nodes_by_kind event Rails World list_nodes_by_kind concept Fake Object search_nodes tool streamio-ffmpeg search_nodes tool carrierwave-video search_nodes question VNC↔WebSocket frame translation search_nodes talk Orchestrating video transcoding in ruby search_nodes takeaway Paperclip Disable Convert Trick search_nodes talk How to hijack search_nodes tool CarrierWave search_nodes tool langchainrb search_nodes project Ruby Romania search_nodes takeaway Port Python Libraries With ChatGPT search_nodes resource Short Ruby Newsletter search_nodes tool rbspy search_nodes project Ruby News search_nodes tool ruby-openai search_nodes project Nerds and Threads search_nodes tool Bootsnap search_nodes project monolith framework search_nodes question Should fake implementations live with production code? search_nodes question Are fake-dice tests enough, or should the real dice be tested too? search_nodes talk Testing Randomness search_nodes takeaway Avoid logic in tests search_nodes person David Halasz search_nodes concept Backus-Naur Form search_nodes talk One machine please, make it Turing search_nodes concept Petri Nets search_nodes tool OHA search_nodes tool heapy search_nodes project gemcheck search_nodes tool methods gem search_nodes tool Ruby Browser Detection Gem search_nodes tool RequestStore search_nodes talk Methods Gem for Ruby Method References search_nodes concept Cynefin Framework search_nodes tool Sidekiq search_nodes talk Under The Hood And On The Surface Of Sidekiq search_nodes question Scaling Sidekiq Elastically search_nodes takeaway Keep Sidekiq Job Parameters Simple search_nodes takeaway Prefer Small Sidekiq Jobs search_nodes concept Sidekiq Batches search_nodes talk Sidekiq Batches Lightning Talk search_nodes question Application-Level Back Pressure For Sidekiq search_nodes question Wrapper Job vs Logic In Job search_nodes question Sidekiq And Redis Cluster search_nodes takeaway Read the Ruby standard library search_nodes talk Ruby Standard Library Hidden Gems Lightning Talk search_nodes tool Distributed Ruby search_nodes tool Standard RB search_nodes tool IronRuby search_nodes tool Rack search_nodes tool Matrix (Ruby stdlib) search_nodes tool Prime (Ruby stdlib) search_nodes tool HTTP/2 search_nodes concept Smart Contract search_nodes tool ruby-contracts search_nodes concept Logic in Tests search_nodes concept Rails Testing Pyramid (Ivan's version) search_nodes tool Faker.js search_nodes tool Deface search_nodes project Grazer search_nodes concept Monkey Patching search_nodes concept Refinements search_nodes concept Ruby Module Customization Mechanics search_nodes concept ActiveSupport Core Extensions search_nodes takeaway Look outside Ruby for better patterns search_nodes takeaway Use Refinements for Coordinated Modernization search_nodes person Akira Matsuda search_nodes person Andrzej Krzywda search_nodes person Paweł Pokrywka search_nodes talk How to Be Top 10% in Ruby Lightning Talk search_nodes person Julik Tarkhanov search_nodes talk Scientific Ruby Lightning Talk search_nodes person Matz search_nodes person DHH search_nodes tool mruby search_nodes person Charles Nutter search_nodes tool Ruby search_nodes person Arturo Herrero search_nodes person Sandi Metz search_nodes person Shugo Maeda search_nodes tool TestBench search_nodes tool minitest search_nodes tool test-prof search_nodes tool power_assert search_nodes tool parallel_tests search_nodes takeaway Rails Tests Are Mostly Integration Tests search_nodes tool Crystal Ball search_nodes company GitHub search_nodes takeaway Open Source Maintainer Lessons search_nodes takeaway Pay the open-source maintainers you depend on search_nodes resource awesome-ddd search_nodes takeaway Publish a roadmap to align contributors search_nodes takeaway Be kind and build useful things search_nodes tool GitHub Releases search_nodes tool reviewdog search_nodes tool Codecov search_nodes tool Release Drafter search_nodes concept Test Driven Development search_nodes concept Params-Driven Development search_nodes takeaway TDD Is Process And Philosophy, Not Mechanics search_nodes concept Axiom-Driven Development search_nodes takeaway Avoid params-driven development search_nodes talk Ever shorter feedback loop search_nodes concept DDD Whirlpool search_nodes talk Development with axioms search_nodes takeaway Cut Test Suites Under 15 Minutes search_nodes concept Command Handler search_nodes tool curl search_nodes concept Command Bus search_nodes concept Bot Fight Mode search_nodes tool dry-cli search_nodes tool jq search_nodes talk Build Your Own Internal CLI Tools Lightning Talk search_nodes tool fish shell search_nodes person Paweł Dąbrowski search_nodes person Michał Bronikowski search_nodes person Jakub Rodzik search_nodes person Łukasz Szydło search_nodes person Mike Perham search_nodes talk International cooperation in IT teams search_nodes person Martin Gamsjaeger search_nodes talk Fix Production Bugs 20x Faster search_nodes

2 edges