Module: Cline::Serializable::ClineData::ClassMethods
- Defined in:
- lib/cline/serializable/cline_data.rb
Overview
Class methods that should be made accessible to any class including our mixin
Internal collapse
-
#from_cline_data(base_dir, *args, create: false, **kwargs) ⇒ Object?
Instantiate an instance of the including class from a base directory.
-
#monitor_cline_data_changes(base_dir, *args, on_change:, monitoring_interval_secs: 1, **kwargs) { ... } ⇒ Utils::FileMonitor?
Monitor changes done on the file and call a callback for each update.
-
#new_instance(file, *args, **kwargs) ⇒ Object
Default factory for instances.
Instance Method Details
#from_cline_data(base_dir, *args, create: false, **kwargs) ⇒ Object?
Instantiate an instance of the including class from a base directory.
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/cline/serializable/cline_data.rb', line 40 def from_cline_data(base_dir, *args, create: false, **kwargs) instance = self.open( ::File.join(base_dir, cline_json_file(base_dir)), *args, default: create ? '{}' : nil, **kwargs ) return unless instance instance.initialize_from_dir(base_dir, create:) instance end |
#monitor_cline_data_changes(base_dir, *args, on_change:, monitoring_interval_secs: 1, **kwargs) { ... } ⇒ Utils::FileMonitor?
Monitor changes done on the file and call a callback for each update.
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/cline/serializable/cline_data.rb', line 65 def monitor_cline_data_changes(base_dir, *args, on_change:, monitoring_interval_secs: 1, **kwargs, &) monitor_updates( ::File.join(base_dir, cline_json_file(base_dir)), *args, on_change: proc do |instance| instance.initialize_from_dir(base_dir, create: false) on_change.call(instance) end, monitoring_interval_secs:, **kwargs, & ) end |
#new_instance(file, *args, **kwargs) ⇒ Object
Default factory for instances. This could be overriden by some classes that need to instantiate differently.
86 87 88 |
# File 'lib/cline/serializable/cline_data.rb', line 86 def new_instance(file, *args, **kwargs) of_hash(Utils::File.safe_json_read(file), *args, **kwargs) end |