Sha256: d72310c534c1ae8765463b068cb89f35a4920995948d06dee3fba7fb7c3e1c43

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

require 'activity_feed/version'
require 'activity_feed/feed'
require 'active_support/core_ext/module/attribute_accessors'
require 'active_support/inflector'

require 'redis'

module ActivityFeed
  mattr_accessor :redis
  mattr_accessor :namespace
  mattr_accessor :key
  mattr_accessor :persistence
    
  def self.persistence=(type = :memory)
    @@persistence_type = type
    
    case type
    when :memory
      require 'activity_feed/memory/item'
      klazz = ActivityFeed::Memory::Item      
    when :mongo_mapper
      require 'activity_feed/mongo_mapper/item'
      klazz = ActivityFeed::MongoMapper::Item
    when :active_record
      require 'activity_feed/active_record/item'
      klazz = ActivityFeed::ActiveRecord::Item
    else
      klazz = "ActivityFeed::#{type.to_s.classify}::Item".constantize
    end
    
    @@persistence = klazz
  end
  
  def self.create_item(attributes)
    item = @@persistence.new(attributes)
    item.save
    item
  end
  
  def self.load_item(item_or_item_id)
    case @@persistence_type
    when :memory
      JSON.parse(item_or_item_id)
    when :mongo_mapper
      ActivityFeed::MongoMapper::Item.find(item_or_item_id)
    when :active_record
      ActivityFeed::ActiveRecord::Item.find(item_or_item_id)
    else
      @@persistence.find(item_or_item_id)    
    end
  end
  
  self.namespace = 'activity'
  self.key = 'feed'
  self.persistence = :memory
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activity_feed-1.0.0 lib/activity_feed.rb