Sha256: 3de21db30a8d7abca3fb5eba752f363ba610c451a3f8b028234f6a0d096aee22

Contents?: true

Size: 1.41 KB

Versions: 8

Compression:

Stored size: 1.41 KB

Contents

module StateFu
  module Persistence
    class Attribute < StateFu::Persistence::Base

      def self.prepare_field( klass, field_name )
        # ensure getter exists
        unless klass.instance_methods.map(&:to_sym).include?( field_name.to_sym )
          Logger.debug "Adding attr_reader :#{field_name} for #{klass}"
          _field_name = field_name
          klass.class_eval do
            private
            attr_reader _field_name
          end
        end

        # ensure setter exists
        unless klass.instance_methods.map(&:to_sym).include?( :"#{field_name}=" )
          Logger.debug "Adding attr_writer :#{field_name}= for #{klass}"
          _field_name = field_name
          klass.class_eval do
            private
            attr_writer _field_name
          end
        end
      end

  def b; binding; end
      private

      # Read / write our strings to a plain old instance variable
      # Define it if it doesn't exist the first time we go to read it

      def read_attribute
        string = object.send( field_name )
        Logger.debug "Read attribute #{field_name}, got #{string.inspect} for #{object.inspect}"
        string
      end

      def write_attribute( string_value )
        writer_method = "#{field_name}="
        Logger.debug "Writing attribute #{field_name} -> #{string_value.inspect} for #{object.inspect}"
        object.send( writer_method, string_value )
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
davidlee-state-fu-0.10.0 lib/state_fu/persistence/attribute.rb
davidlee-state-fu-0.11.0 lib/state_fu/persistence/attribute.rb
davidlee-state-fu-0.11.1 lib/persistence/attribute.rb
davidlee-state-fu-0.12.0 lib/persistence/attribute.rb
davidlee-state-fu-0.12.1 lib/persistence/attribute.rb
state-fu-0.12.3 lib/persistence/attribute.rb
state-fu-0.12.1 lib/persistence/attribute.rb
state-fu-0.11.1 lib/persistence/attribute.rb