diff --git a/lib/claw/serializer.rb b/lib/claw/serializer.rb index 7e793be..8f3f971 100644 --- a/lib/claw/serializer.rb +++ b/lib/claw/serializer.rb @@ -15,9 +15,9 @@ class << self # # @param bind [Binding] the binding whose variables to save # @param dir [String] directory to write state files into - def save(bind, dir) + def save(bind, dir, baseline_vars: []) FileUtils.mkdir_p(dir) - save_values(bind, dir) + save_values(bind, dir, baseline_vars: baseline_vars) save_definitions(bind, dir) end @@ -35,14 +35,16 @@ def restore(bind, dir) # --- Values --- - def save_values(bind, dir) + def save_values(bind, dir, baseline_vars: []) values = {} bind.local_variables.each do |name| - val = bind.local_variable_get(name) - next if name.to_s.start_with?("_") + name_s = name.to_s + next if name_s.start_with?("_") + next if baseline_vars.include?(name_s) + val = bind.local_variable_get(name) encoded = encode_value(val) - values[name.to_s] = encoded if encoded + values[name_s] = encoded if encoded end path = File.join(dir, VALUES_FILE) diff --git a/lib/claw/tui/model.rb b/lib/claw/tui/model.rb index b148334..0382ebe 100644 --- a/lib/claw/tui/model.rb +++ b/lib/claw/tui/model.rb @@ -3,6 +3,7 @@ require "bubbletea" require "bubbles" require "io/console" +require "pp" begin require "bubblezone" @@ -52,7 +53,7 @@ def initialize(caller_binding) @view_height = 24 @zone = defined?(Bubblezone::Manager) ? Bubblezone::Manager.new : nil @baseline_methods = begin - caller_binding.eval("methods").dup + caller_binding.eval("methods | private_methods").dup rescue [] end @@ -657,7 +658,7 @@ def write_trace(trace_data) end def save_state - Claw::Serializer.save(@caller_binding, File.join(Dir.pwd, ".ruby-claw")) if Claw.config.persist_session + Claw::Serializer.save(@caller_binding, File.join(Dir.pwd, ".ruby-claw"), baseline_vars: @baseline_vars) if Claw.config.persist_session Claw.memory&.save_session rescue # ignore save failures diff --git a/lib/claw/version.rb b/lib/claw/version.rb index 2ef8b00..e55b467 100644 --- a/lib/claw/version.rb +++ b/lib/claw/version.rb @@ -2,5 +2,5 @@ module Claw VERSION = "0.2.2" - BUILD = "20260407-015" + BUILD = "20260407-016" end