isolated spaces • Load apps/libs in a space • Hide changes from apps/libs in the space to others • Run methods de fi ned in the space with the de fi nition
a funky monkey patches in tests? • Applications tests sometimes need monkey patches • to mock library behaviors, IO objects, … • Most of tests can run without box. Just some of them can ’ t. • How about running tests in boxes? • Running all tests in boxes is too expensive • Run just some of them in boxes! Ruby Box Application Code Test Case Monkey Patches Test Case Test Case Test Case Test Runner
updates • You ’ re trying to update library versions of your app • Blue-green deployment using cloud services • Long-term parallel testing • Hard things • Building and keeping those infra components • Verifying responses (only with status, without Ruby code) "QQMJCT WFS "QQMJCT WFS Load Balancer 4FOESFRVFTUT 7FSJGZSFTQPOTFTʜ
Library/middleware updates • Running 2 sets of apps/libraries in 2 boxes • You can run 2 sets in a Ruby process • You can use Ruby code to check diffs! "QQMJCT WFS "QQMJCT WFS Application Server 3PVUFSFRVFTUT BTVTVBM 7FSJGZSFTQPOTFTVTJOH3VCZDPEF
Fix bugs • It still crashes (as you see) • Design new ways to • Provide hook points (box hides methods) • Stop using global variables (box hides global variable changes) • Work together with RubyGems • RubyGems has internal states (calling RubyGems from boxes doesn ’ t work)
should be corner cases! • I need reports from various environments • You can fi nd new bugs of Ruby Box • You can fi x something for Ruby Box! • Libraries, middleware, …