Sha256: 5d2b1cb9cea64af89208f305d27f8212bf13ec78b85ac0da272dddfbfade9741

Contents?: true

Size: 1.43 KB

Versions: 14

Compression:

Stored size: 1.43 KB

Contents

module SocialStream
  # Seed you database with initial data for SocialStream
  #
  class Seed
    def initialize(config)
      s = YAML.load_file(config)

      seed_activity_verbs
      seed_relations(s['relations'])
    end

    def seed_activity_verbs
      ActivityVerb::Available.each do |value|
        ActivityVerb.find_or_create_by_name value
      end
    end

    def seed_relations(rs)
      relations = {}

      rs.each_pair do |name, r|
        relations[name] =
          Relation.
          find_or_create_by_sender_type_and_receiver_type_and_name(r['sender_type'],
                                                                   r['receiver_type'],
                                                                   r['name'])
        relations[name].update_attribute(:reflexive, r['reflexive'])

        # FIXME: optimize
        relations[name].relation_permissions.destroy_all

        if (ps = r['permissions']).present?
          ps.each do |p| 
            relations[name].permissions << 
              Permission.find_or_create_by_action_and_object_and_parameter(*p)
          end 
        end
      end

      # Parent, inverse and granted relations must be set after creation
      rs.each_pair do |name, r|
        %w( parent inverse granted ).each do |s|
          relations[name].__send__("#{ s }=", relations[r[s]]) # relations[name].parent = relations[r['parent']]
        end
        relations[name].save!
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
social_stream-0.2.3 lib/social_stream/seed.rb
social_stream-0.2.2 lib/social_stream/seed.rb
social_stream-0.2.1 lib/social_stream/seed.rb
social_stream-0.2.0 lib/social_stream/seed.rb
social_stream-0.1.7 lib/social_stream/seed.rb
social_stream-0.1.6 lib/social_stream/seed.rb
social_stream-0.1.5 lib/social_stream/seed.rb
social_stream-0.1.4 lib/social_stream/seed.rb
social_stream-0.1.3 lib/social_stream/seed.rb
social_stream-0.1.2 lib/social_stream/seed.rb
social_stream-0.1.1 lib/social_stream/seed.rb
social_stream-0.1.0 lib/social_stream/seed.rb
social_stream-0.0.5 lib/social_stream/seed.rb
social_stream-0.0.4 lib/social_stream/seed.rb