From 017cc54e171ed5bbecb346a887914dad7cb5918f Mon Sep 17 00:00:00 2001 From: Naoto Ono Date: Thu, 17 Nov 2022 00:09:00 +0900 Subject: [PATCH] add Ruby demo --- demos/ruby/README.md | 7 +++++++ demos/ruby/src/demo_custom_visualizer.rb | 18 ++++++++++++++++++ demos/ruby/src/demo_random_walks.rb | 12 ++++++++++++ extension/README.md | 2 +- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 demos/ruby/README.md create mode 100644 demos/ruby/src/demo_custom_visualizer.rb create mode 100644 demos/ruby/src/demo_random_walks.rb diff --git a/demos/ruby/README.md b/demos/ruby/README.md new file mode 100644 index 0000000..0f5f2a6 --- /dev/null +++ b/demos/ruby/README.md @@ -0,0 +1,7 @@ +# Ruby Demos + +To visualize Ruby objects, you need to install [debugvisualizer.gem](https://github.com/ono-max/debugvisualizer). + +Install the gem by executing: + + $ gem install debugvisualizer diff --git a/demos/ruby/src/demo_custom_visualizer.rb b/demos/ruby/src/demo_custom_visualizer.rb new file mode 100644 index 0000000..16d6607 --- /dev/null +++ b/demos/ruby/src/demo_custom_visualizer.rb @@ -0,0 +1,18 @@ +require 'debugvisualizer' + +class Foo; end + +DebugVisualizer.register Foo do |data| + { + id: "my_visualizer", + name: "My Visualizer", + data: { + kind: { text: true }, + text: "Foo" + } + } +end + +f = Foo.new +# visualize `f` here! +binding.break diff --git a/demos/ruby/src/demo_random_walks.rb b/demos/ruby/src/demo_random_walks.rb new file mode 100644 index 0000000..407d183 --- /dev/null +++ b/demos/ruby/src/demo_random_walks.rb @@ -0,0 +1,12 @@ +data = [] +curVal = 0 + +100.times{ + 100.times{ + delta = rand > 0.5 ? 1 : -1 + data << curVal + curVal += delta + # visualize `data` here and press F5(or Continue button) over and over! + binding.break + } +} diff --git a/extension/README.md b/extension/README.md index 508df73..a8c5d73 100644 --- a/extension/README.md +++ b/extension/README.md @@ -25,7 +25,7 @@ See [demos](../demos/) for demos. These languages and debuggers are verified to - C++ using `cppdbg` debug adapter: [✅ Basic Support](../demos/cpp) - Swift using `lldb` debug adapter: [✅ Basic Support](../demos/swift) - Rust using `lldb` debug adapter: [✅ Basic Support](../demos/rust) -- Ruby using `rdbg` debug adapter: [✅ Basic Support] +- Ruby using `rdbg` debug adapter: [✅ Basic Support](../demos/ruby) All other languages and debuggers might work too. For languages with _Basic Support_, only JSON strings can be visualized - you must implement some logic that builds this JSON for your data structure!