seymour 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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