Skip to main content
Glama
variables.rb3.26 kB
require './models.rb' # Global variables for testing references $global_counter = 0 $global_config = { debug: true, timeout: 30 } class DataContainer attr_accessor :status, :data, :metadata def initialize @status = "pending" @data = {} @metadata = { created_at: Time.now, version: "1.0" } end def update_status(new_status) old_status = @status @status = new_status log_status_change(old_status, new_status) end def process_data(input_data) @data = input_data @status = "processing" # Process the data result = @data.transform_values { |v| v.to_s.upcase } @status = "completed" result end def get_metadata_info info = "Status: #{@status}, Version: #{@metadata[:version]}" info += ", Created: #{@metadata[:created_at]}" info end private def log_status_change(old_status, new_status) puts "Status changed from #{old_status} to #{new_status}" end end class StatusTracker def initialize @tracked_items = [] end def add_item(item) @tracked_items << item item.status = "tracked" if item.respond_to?(:status=) end def find_by_status(target_status) @tracked_items.select { |item| item.status == target_status } end def update_all_status(new_status) @tracked_items.each do |item| item.status = new_status if item.respond_to?(:status=) end end end # Module level variables and functions module ProcessingHelper PROCESSING_MODES = ["sync", "async", "batch"].freeze @@instance_count = 0 def self.create_processor(mode = "sync") @@instance_count += 1 { id: @@instance_count, mode: mode, created_at: Time.now } end def self.get_instance_count @@instance_count end end # Test instances for reference testing dataclass_instance = DataContainer.new dataclass_instance.status = "initialized" second_dataclass = DataContainer.new second_dataclass.update_status("ready") tracker = StatusTracker.new tracker.add_item(dataclass_instance) tracker.add_item(second_dataclass) # Function that uses the variables def demonstrate_variable_usage puts "Global counter: #{$global_counter}" container = DataContainer.new container.status = "demo" processor = ProcessingHelper.create_processor("async") puts "Created processor #{processor[:id]} in #{processor[:mode]} mode" container end # More complex variable interactions class VariableInteractionTest def initialize @internal_status = "created" @data_containers = [] end def add_container(container) @data_containers << container container.status = "added_to_collection" @internal_status = "modified" end def process_all_containers @data_containers.each do |container| container.status = "batch_processed" end @internal_status = "processing_complete" end def get_status_summary statuses = @data_containers.map(&:status) { internal: @internal_status, containers: statuses, count: @data_containers.length } end end # Create instances for testing interaction_test = VariableInteractionTest.new interaction_test.add_container(dataclass_instance) interaction_test.add_container(second_dataclass)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/oraios/serena'

If you have feedback or need assistance with the MCP directory API, please join our Discord server