seymour 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -2
- data/Rakefile +0 -1
- data/lib/generators/seymour/feed/USAGE +7 -0
- data/lib/generators/seymour/feed/feed_generator.rb +32 -0
- data/lib/generators/seymour/feed/templates/feed.rb +2 -0
- data/lib/seymour.rb +2 -4
- data/lib/seymour/distributable.rb +13 -0
- data/lib/seymour/{activity_feed.rb → feed.rb} +17 -4
- data/lib/seymour/redis.rb +0 -1
- data/{app/controllers → lib}/seymour/render_controller.rb +0 -0
- data/lib/seymour/version.rb +1 -1
- data/spec/dummy/app/models/feeds/test_feed.rb +2 -0
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/database.yml +13 -0
- data/spec/dummy/config/routes.rb +0 -1
- data/spec/dummy/db/schema.rb +2 -2
- data/spec/dummy/lib/seymour/admin_feed.rb +1 -1
- data/spec/dummy/lib/seymour/event_feed.rb +1 -1
- data/spec/dummy/lib/seymour/player_feed.rb +1 -1
- data/spec/dummy/lib/seymour/user_feed.rb +1 -1
- data/spec/generators/seymour/feed/feed_generator_spec.rb +22 -0
- data/spec/seymour/distributable_spec.rb +30 -6
- data/spec/seymour/{activity_feed_spec.rb → feed_spec.rb} +37 -6
- data/spec/seymour/redis_spec.rb +1 -1
- data/spec/spec_helper.rb +12 -12
- data/spec/support/capybara.rb +8 -0
- data/spec/support/{test_redis.rb → redis.rb} +0 -0
- metadata +46 -53
- data/app/assets/javascripts/seymour/application.js +0 -9
- data/app/assets/stylesheets/seymour/application.css +0 -7
- data/app/controllers/seymour/application_controller.rb +0 -4
- data/app/helpers/seymour/application_helper.rb +0 -4
- data/app/views/layouts/seymour/application.html.erb +0 -14
- data/config/routes.rb +0 -2
data/README.md
CHANGED
@@ -45,10 +45,10 @@ end
|
|
45
45
|
Declaring `feed_me_seymour` in the activity parent class provides `Activity` and its subclasses with the ability to set their `audience`. Activities can have any number of audiences. Each audience must be available as an instance method on comment activities.
|
46
46
|
|
47
47
|
``` ruby
|
48
|
-
class TeamFeed < Seymour::
|
48
|
+
class TeamFeed < Seymour::Feed
|
49
49
|
end
|
50
50
|
|
51
|
-
class DashboardFeed < Seymour::
|
51
|
+
class DashboardFeed < Seymour::Feed
|
52
52
|
end
|
53
53
|
|
54
54
|
```
|
@@ -66,4 +66,9 @@ activity.distribute
|
|
66
66
|
|
67
67
|
This library is based on the feed architecture used to distribute activity items at [Weplay](http://weplay.com). Weplay supports activity distribution to a variety of feeds: user dashboards, game day comment pages, global points leaders, etc. The html for each activity item is pre-rendered in a background job. To build a user's dashboard activities, the activity feed needs only to select the activities at the top of the list and output the pre-rendered html for each item, reducing the extra includes and joins needed in-process.
|
68
68
|
|
69
|
+
## TODO
|
69
70
|
|
71
|
+
* generator for activity model + migration
|
72
|
+
* generator for activity feed
|
73
|
+
* support rollup
|
74
|
+
* relevance/affinity sorting
|
data/Rakefile
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
module Seymour
|
3
|
+
class FeedGenerator < ::Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
def build_feed
|
7
|
+
feed_root = 'app/models/feeds'
|
8
|
+
empty_directory feed_root
|
9
|
+
template 'feed.rb', "#{feed_root}/#{singular_name}_feed.rb"
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
# module Draper
|
15
|
+
# class DecoratorGenerator < Rails::Generators::NamedBase
|
16
|
+
# source_root File.expand_path('../templates', __FILE__)
|
17
|
+
#
|
18
|
+
# DECORATORS_ROOT = 'app/decorators/'
|
19
|
+
# APPLICATION_DECORATOR = 'application_decorator.rb'
|
20
|
+
# APPLICATION_DECORATOR_PATH = DECORATORS_ROOT + APPLICATION_DECORATOR
|
21
|
+
#
|
22
|
+
# def build_model_and_application_decorators
|
23
|
+
# empty_directory "app/decorators"
|
24
|
+
# unless File.exists?(APPLICATION_DECORATOR_PATH)
|
25
|
+
# template APPLICATION_DECORATOR, APPLICATION_DECORATOR_PATH
|
26
|
+
# end
|
27
|
+
# template 'decorator.rb', "#{DECORATORS_ROOT}#{singular_name}_decorator.rb"
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# hook_for :test_framework
|
31
|
+
# end
|
32
|
+
# end
|
data/lib/seymour.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
require "seymour/engine"
|
2
1
|
require "seymour/version"
|
3
2
|
require "seymour/redis"
|
4
|
-
require "seymour/
|
3
|
+
require "seymour/feed"
|
5
4
|
require "seymour/acts_as_activity"
|
6
5
|
require "seymour/distributable"
|
7
6
|
require "seymour/renderable"
|
8
|
-
|
7
|
+
require "seymour/render_controller"
|
9
8
|
|
10
9
|
module Seymour
|
11
10
|
extend self
|
12
|
-
|
13
11
|
end
|
@@ -34,6 +34,10 @@ module Seymour
|
|
34
34
|
def distribute(activity)
|
35
35
|
tap_feeds_for(activity) { |feed| feed.push(activity) }
|
36
36
|
end
|
37
|
+
|
38
|
+
def remove(activity)
|
39
|
+
tap_feeds_for(activity) { |feed| feed.remove(activity) }
|
40
|
+
end
|
37
41
|
|
38
42
|
private
|
39
43
|
|
@@ -57,6 +61,11 @@ module Seymour
|
|
57
61
|
def try_find_each(activity_audience, options = {}, &block)
|
58
62
|
if defined? activity_audience.find_each
|
59
63
|
options[:batch_size] ||= DEFAULT_BATCH_SIZE
|
64
|
+
|
65
|
+
# TODO support exclusive scope
|
66
|
+
# activity_audience.find_each(options) do
|
67
|
+
# relation.send(:with_exclusive_scope) &block
|
68
|
+
# end
|
60
69
|
activity_audience.find_each(options) &block
|
61
70
|
else
|
62
71
|
activity_audience.each &block
|
@@ -71,6 +80,10 @@ module Seymour
|
|
71
80
|
self.class.distribute(self)
|
72
81
|
end
|
73
82
|
|
83
|
+
def remove
|
84
|
+
self.class.remove(self)
|
85
|
+
end
|
86
|
+
|
74
87
|
def feeds
|
75
88
|
self.class.feeds_for(self)
|
76
89
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Seymour
|
2
|
-
class
|
2
|
+
class Feed
|
3
3
|
|
4
4
|
attr_accessor :owner
|
5
5
|
|
@@ -39,12 +39,26 @@ module Seymour
|
|
39
39
|
redis.lrem(key, 0, activity_id)
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
def insert_and_order(activities)
|
43
|
+
ids = (activity_ids.map(&:to_i) + activities.map(&:id)).sort.uniq
|
44
|
+
|
45
|
+
remove_all
|
46
|
+
|
47
|
+
ids.each do |id|
|
48
|
+
perform_push(id)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
protected
|
43
53
|
|
44
54
|
def redis
|
45
55
|
@redis ||= Seymour.redis
|
46
56
|
end
|
47
57
|
|
58
|
+
def remove_all
|
59
|
+
redis.del(key)
|
60
|
+
end
|
61
|
+
|
48
62
|
def owner_name
|
49
63
|
owner.class.name
|
50
64
|
end
|
@@ -73,6 +87,5 @@ module Seymour
|
|
73
87
|
redis.send(cmd, key, activity_id)
|
74
88
|
redis.ltrim(key, 0, max_size)
|
75
89
|
end
|
76
|
-
|
77
90
|
end
|
78
|
-
end
|
91
|
+
end
|
data/lib/seymour/redis.rb
CHANGED
File without changes
|
data/lib/seymour/version.rb
CHANGED
@@ -23,3 +23,16 @@ production:
|
|
23
23
|
database: db/production.sqlite3
|
24
24
|
pool: 5
|
25
25
|
timeout: 5000
|
26
|
+
|
27
|
+
# spec/dummy/config/database.yml
|
28
|
+
# shared: &shared
|
29
|
+
# adapter: sqlite3
|
30
|
+
# database: db/development.sqlite3
|
31
|
+
# pool: 5
|
32
|
+
# timeout: 5000
|
33
|
+
#
|
34
|
+
# development:
|
35
|
+
# <<: *shared
|
36
|
+
#
|
37
|
+
# test:
|
38
|
+
# <<: *shared
|
data/spec/dummy/config/routes.rb
CHANGED
data/spec/dummy/db/schema.rb
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
ActiveRecord::Schema.define(:version => 20111015001158) do
|
15
15
|
|
16
16
|
create_table "activities", :force => true do |t|
|
17
|
-
t.integer "
|
18
|
-
t.string "
|
17
|
+
t.integer "subject_id"
|
18
|
+
t.string "subject_type"
|
19
19
|
t.integer "actor_id"
|
20
20
|
t.datetime "created_at"
|
21
21
|
t.datetime "updated_at"
|
@@ -1,2 +1,2 @@
|
|
1
|
-
class AdminFeed < Seymour::
|
1
|
+
class AdminFeed < Seymour::Feed
|
2
2
|
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
class EventFeed < Seymour::
|
1
|
+
class EventFeed < Seymour::Feed
|
2
2
|
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
class PlayerFeed < Seymour::
|
1
|
+
class PlayerFeed < Seymour::Feed
|
2
2
|
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
class UserFeed < Seymour::
|
1
|
+
class UserFeed < Seymour::Feed
|
2
2
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/seymour/feed/feed_generator'
|
5
|
+
|
6
|
+
describe Seymour::FeedGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
describe 'no arguments' do
|
13
|
+
before { run_generator %w(dashboard) }
|
14
|
+
|
15
|
+
describe 'app/models/feeds/dashboard_feed.rb' do
|
16
|
+
subject { file('app/models/feeds/dashboard_feed.rb') }
|
17
|
+
it { should exist }
|
18
|
+
it { should contain "class DashboardFeed < Seymour::Feed" }
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -68,28 +68,52 @@ describe Seymour::Distributable do
|
|
68
68
|
DistributableActivity.feeds_for(activity)
|
69
69
|
end
|
70
70
|
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "actions on activity" do
|
74
|
+
let(:activity) { DistributableActivity.new }
|
75
|
+
let(:feed) { UserFeed.new(mock_model(User)) }
|
76
|
+
|
77
|
+
before(:each) do
|
78
|
+
DistributableActivity.stub!(:tap_feeds_for).with(activity).and_yield(feed)
|
79
|
+
end
|
71
80
|
|
72
81
|
describe "distribute" do
|
73
82
|
it "should push activity to each feed" do
|
74
|
-
feed = UserFeed.new(mock_model(User))
|
75
|
-
DistributableActivity.stub!(:tap_feeds_for).with(activity).and_yield(feed)
|
76
83
|
feed.should_receive(:push).with(activity)
|
77
84
|
DistributableActivity.distribute(activity)
|
78
85
|
end
|
79
86
|
end
|
80
|
-
end
|
81
87
|
|
88
|
+
describe "remove" do
|
89
|
+
it "should remove activity from each feed" do
|
90
|
+
feed.should_receive(:remove).with(activity)
|
91
|
+
DistributableActivity.remove(activity)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
82
95
|
end
|
83
96
|
|
84
97
|
describe "instance methods" do
|
98
|
+
let(:activity) { DistributableActivity.new }
|
99
|
+
let(:feed) { UserFeed.new(mock_model(User)) }
|
100
|
+
|
101
|
+
before(:each) do
|
102
|
+
DistributableActivity.stub!(:tap_feeds_for).with(activity).and_yield(feed)
|
103
|
+
end
|
104
|
+
|
85
105
|
describe "distribute" do
|
86
106
|
it "should push itself to audience feeds" do
|
87
|
-
activity = DistributableActivity.new
|
88
|
-
feed = UserFeed.new(mock_model(User))
|
89
|
-
DistributableActivity.stub!(:tap_feeds_for).with(activity).and_yield(feed)
|
90
107
|
feed.should_receive(:push).with(activity)
|
91
108
|
activity.distribute
|
92
109
|
end
|
93
110
|
end
|
111
|
+
|
112
|
+
describe "remove" do
|
113
|
+
it "should remove itself from audience feeds" do
|
114
|
+
feed.should_receive(:remove).with(activity)
|
115
|
+
activity.remove
|
116
|
+
end
|
117
|
+
end
|
94
118
|
end
|
95
119
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Seymour::
|
3
|
+
describe Seymour::Feed do
|
4
4
|
|
5
5
|
let(:owner) { mock_model(User) }
|
6
|
-
let(:feed) { Seymour::
|
6
|
+
let(:feed) { Seymour::Feed.new(owner) }
|
7
7
|
|
8
8
|
describe "class methods" do
|
9
9
|
describe "feed_classes" do
|
10
10
|
it "should provide a list of feed sub classes" do
|
11
|
-
Seymour::
|
11
|
+
Seymour::Feed.feed_classes.should include(EventFeed)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -16,7 +16,7 @@ describe Seymour::ActivityFeed do
|
|
16
16
|
it "should call activity distribute on activity" do
|
17
17
|
activity = mock_model(Activity)
|
18
18
|
activity.should_receive(:distribute)
|
19
|
-
Seymour::
|
19
|
+
Seymour::Feed.distribute(activity)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -37,7 +37,7 @@ describe Seymour::ActivityFeed do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
it "new feed with same owner pushes to same list" do
|
40
|
-
new_feed = Seymour::
|
40
|
+
new_feed = Seymour::Feed.new(owner)
|
41
41
|
|
42
42
|
feed.push mock_model(Activity, :id => 123)
|
43
43
|
new_feed.push mock_model(Activity, :id => 456)
|
@@ -48,7 +48,7 @@ describe Seymour::ActivityFeed do
|
|
48
48
|
|
49
49
|
it "new feed with different owner pushes to different list" do
|
50
50
|
new_owner = mock_model(User)
|
51
|
-
new_feed = Seymour::
|
51
|
+
new_feed = Seymour::Feed.new(new_owner)
|
52
52
|
|
53
53
|
feed.push mock_model(Activity, :id => 123)
|
54
54
|
new_feed.push mock_model(Activity, :id => 456)
|
@@ -58,6 +58,37 @@ describe Seymour::ActivityFeed do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
describe "insert_and_order" do
|
62
|
+
it "should insert activities into the list" do
|
63
|
+
activities = [mock_model(Activity, :id => 123), mock_model(Activity, :id => 456)]
|
64
|
+
feed.insert_and_order(activities)
|
65
|
+
|
66
|
+
feed.activity_ids.should == [456, 123]
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should reorder activities by id" do
|
70
|
+
feed.push mock_model(Activity, :id => 123)
|
71
|
+
feed.push mock_model(Activity, :id => 456)
|
72
|
+
|
73
|
+
activities = [mock_model(Activity, :id => 234), mock_model(Activity, :id => 789)]
|
74
|
+
|
75
|
+
feed.insert_and_order(activities)
|
76
|
+
|
77
|
+
feed.activity_ids.should == [789, 456, 234, 123]
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should remove duplicates" do
|
81
|
+
feed.push mock_model(Activity, :id => 123)
|
82
|
+
feed.push mock_model(Activity, :id => 456)
|
83
|
+
|
84
|
+
activities = [mock_model(Activity, :id => 123), mock_model(Activity, :id => 789)]
|
85
|
+
|
86
|
+
feed.insert_and_order(activities)
|
87
|
+
|
88
|
+
feed.activity_ids.should == [789, 456, 123]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
61
92
|
describe "remove" do
|
62
93
|
it "removes activity from list by id" do
|
63
94
|
activity_1 = mock_model(Activity, :id => 456)
|
data/spec/seymour/redis_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
2
|
+
$LOAD_PATH.unshift dir + '/../lib'
|
3
|
+
|
1
4
|
# Configure Rails Environment
|
2
5
|
ENV["RAILS_ENV"] ||= 'test'
|
3
6
|
|
4
7
|
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
8
|
+
require 'seymour'
|
9
|
+
require 'seymour/engine'
|
10
|
+
|
5
11
|
require 'rspec/rails'
|
6
|
-
|
7
|
-
|
12
|
+
require "ammeter/init"
|
13
|
+
require 'factory_girl_rails'
|
8
14
|
|
9
|
-
# Load support files
|
15
|
+
# Load support files
|
10
16
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
17
|
|
12
|
-
dir = File.dirname(File.expand_path(__FILE__))
|
13
|
-
$LOAD_PATH.unshift dir + '/../lib'
|
14
|
-
$LOAD_PATH.unshift dir + '/support'
|
15
|
-
|
16
|
-
require 'seymour'
|
17
|
-
require 'test_redis'
|
18
|
-
require 'factory_girl_rails'
|
19
|
-
|
20
18
|
RSpec.configure do |config|
|
21
19
|
config.mock_with :rspec
|
20
|
+
config.use_transactional_fixtures = false
|
22
21
|
end
|
23
22
|
|
24
|
-
|
23
|
+
Rails.backtrace_cleaner.remove_silencers!
|
24
|
+
TestRedis::Server.start!(dir)
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seymour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,33 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-25 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70116777384080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.
|
21
|
+
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70116777384080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis-namespace
|
27
|
-
requirement: &
|
27
|
+
requirement: &70116777383560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70116777383560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70116777383100 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70116777383100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec-rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &70116777382580 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,21 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70116777382580
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *70358103555440
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec-rails
|
71
|
-
requirement: &70358103554120 !ruby/object:Gem::Requirement
|
59
|
+
name: steak
|
60
|
+
requirement: &70116777382160 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ! '>='
|
@@ -76,10 +65,10 @@ dependencies:
|
|
76
65
|
version: '0'
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *70116777382160
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement: &
|
70
|
+
name: capybara
|
71
|
+
requirement: &70116777381700 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ! '>='
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: '0'
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *70116777381700
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
81
|
+
name: ammeter
|
82
|
+
requirement: &70116777381280 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ! '>='
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: '0'
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *70116777381280
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: database_cleaner
|
104
|
-
requirement: &
|
93
|
+
requirement: &70116777380840 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,10 +98,10 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *70116777380840
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: factory_girl_rails
|
115
|
-
requirement: &
|
104
|
+
requirement: &70116777380280 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,10 +109,10 @@ dependencies:
|
|
120
109
|
version: '0'
|
121
110
|
type: :development
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *70116777380280
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: sqlite3
|
126
|
-
requirement: &
|
115
|
+
requirement: &70116777379860 !ruby/object:Gem::Requirement
|
127
116
|
none: false
|
128
117
|
requirements:
|
129
118
|
- - ! '>='
|
@@ -131,7 +120,7 @@ dependencies:
|
|
131
120
|
version: '0'
|
132
121
|
type: :development
|
133
122
|
prerelease: false
|
134
|
-
version_requirements: *
|
123
|
+
version_requirements: *70116777379860
|
135
124
|
description: Activity feed distribution for Rails applications
|
136
125
|
email:
|
137
126
|
- rosskaff@gmail.com
|
@@ -139,19 +128,16 @@ executables: []
|
|
139
128
|
extensions: []
|
140
129
|
extra_rdoc_files: []
|
141
130
|
files:
|
142
|
-
-
|
143
|
-
-
|
144
|
-
-
|
145
|
-
- app/controllers/seymour/render_controller.rb
|
146
|
-
- app/helpers/seymour/application_helper.rb
|
147
|
-
- app/views/layouts/seymour/application.html.erb
|
148
|
-
- config/routes.rb
|
149
|
-
- lib/seymour/activity_feed.rb
|
131
|
+
- lib/generators/seymour/feed/feed_generator.rb
|
132
|
+
- lib/generators/seymour/feed/templates/feed.rb
|
133
|
+
- lib/generators/seymour/feed/USAGE
|
150
134
|
- lib/seymour/acts_as_activity.rb
|
151
135
|
- lib/seymour/batched_user_enumerator.rb
|
152
136
|
- lib/seymour/distributable.rb
|
153
137
|
- lib/seymour/engine.rb
|
138
|
+
- lib/seymour/feed.rb
|
154
139
|
- lib/seymour/redis.rb
|
140
|
+
- lib/seymour/render_controller.rb
|
155
141
|
- lib/seymour/renderable.rb
|
156
142
|
- lib/seymour/version.rb
|
157
143
|
- lib/seymour.rb
|
@@ -172,6 +158,7 @@ files:
|
|
172
158
|
- spec/dummy/app/models/activity.rb
|
173
159
|
- spec/dummy/app/models/comment.rb
|
174
160
|
- spec/dummy/app/models/event.rb
|
161
|
+
- spec/dummy/app/models/feeds/test_feed.rb
|
175
162
|
- spec/dummy/app/models/user.rb
|
176
163
|
- spec/dummy/app/views/activities/_activity.html.erb
|
177
164
|
- spec/dummy/app/views/activities/_test_activity.html.erb
|
@@ -209,15 +196,17 @@ files:
|
|
209
196
|
- spec/dummy/public/favicon.ico
|
210
197
|
- spec/dummy/script/rails
|
211
198
|
- spec/dummy/spec/factories.rb
|
199
|
+
- spec/generators/seymour/feed/feed_generator_spec.rb
|
212
200
|
- spec/redis-spec.conf
|
213
|
-
- spec/seymour/activity_feed_spec.rb
|
214
201
|
- spec/seymour/distributable_spec.rb
|
215
202
|
- spec/seymour/dummy/test_activity_spec.rb
|
203
|
+
- spec/seymour/feed_spec.rb
|
216
204
|
- spec/seymour/redis_spec.rb
|
217
205
|
- spec/seymour/renderable_spec.rb
|
218
206
|
- spec/seymour_spec.rb
|
219
207
|
- spec/spec_helper.rb
|
220
|
-
- spec/support/
|
208
|
+
- spec/support/capybara.rb
|
209
|
+
- spec/support/redis.rb
|
221
210
|
homepage: ''
|
222
211
|
licenses: []
|
223
212
|
post_install_message:
|
@@ -232,7 +221,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
221
|
version: '0'
|
233
222
|
segments:
|
234
223
|
- 0
|
235
|
-
hash:
|
224
|
+
hash: 2439215403903201446
|
236
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
226
|
none: false
|
238
227
|
requirements:
|
@@ -241,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
230
|
version: '0'
|
242
231
|
segments:
|
243
232
|
- 0
|
244
|
-
hash:
|
233
|
+
hash: 2439215403903201446
|
245
234
|
requirements: []
|
246
235
|
rubyforge_project:
|
247
236
|
rubygems_version: 1.8.10
|
@@ -262,6 +251,7 @@ test_files:
|
|
262
251
|
- spec/dummy/app/models/activity.rb
|
263
252
|
- spec/dummy/app/models/comment.rb
|
264
253
|
- spec/dummy/app/models/event.rb
|
254
|
+
- spec/dummy/app/models/feeds/test_feed.rb
|
265
255
|
- spec/dummy/app/models/user.rb
|
266
256
|
- spec/dummy/app/views/activities/_activity.html.erb
|
267
257
|
- spec/dummy/app/views/activities/_test_activity.html.erb
|
@@ -299,12 +289,15 @@ test_files:
|
|
299
289
|
- spec/dummy/public/favicon.ico
|
300
290
|
- spec/dummy/script/rails
|
301
291
|
- spec/dummy/spec/factories.rb
|
292
|
+
- spec/generators/seymour/feed/feed_generator_spec.rb
|
302
293
|
- spec/redis-spec.conf
|
303
|
-
- spec/seymour/activity_feed_spec.rb
|
304
294
|
- spec/seymour/distributable_spec.rb
|
305
295
|
- spec/seymour/dummy/test_activity_spec.rb
|
296
|
+
- spec/seymour/feed_spec.rb
|
306
297
|
- spec/seymour/redis_spec.rb
|
307
298
|
- spec/seymour/renderable_spec.rb
|
308
299
|
- spec/seymour_spec.rb
|
309
300
|
- spec/spec_helper.rb
|
310
|
-
- spec/support/
|
301
|
+
- spec/support/capybara.rb
|
302
|
+
- spec/support/redis.rb
|
303
|
+
has_rdoc:
|
@@ -1,9 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
-
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
-
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
-
// the compiled file.
|
6
|
-
//
|
7
|
-
//= require jquery
|
8
|
-
//= require jquery_ujs
|
9
|
-
//= require_tree .
|
@@ -1,7 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
-
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
-
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
-
*= require_self
|
6
|
-
*= require_tree .
|
7
|
-
*/
|
data/config/routes.rb
DELETED