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.
Files changed (34) hide show
  1. data/README.md +7 -2
  2. data/Rakefile +0 -1
  3. data/lib/generators/seymour/feed/USAGE +7 -0
  4. data/lib/generators/seymour/feed/feed_generator.rb +32 -0
  5. data/lib/generators/seymour/feed/templates/feed.rb +2 -0
  6. data/lib/seymour.rb +2 -4
  7. data/lib/seymour/distributable.rb +13 -0
  8. data/lib/seymour/{activity_feed.rb → feed.rb} +17 -4
  9. data/lib/seymour/redis.rb +0 -1
  10. data/{app/controllers → lib}/seymour/render_controller.rb +0 -0
  11. data/lib/seymour/version.rb +1 -1
  12. data/spec/dummy/app/models/feeds/test_feed.rb +2 -0
  13. data/spec/dummy/config/application.rb +1 -0
  14. data/spec/dummy/config/database.yml +13 -0
  15. data/spec/dummy/config/routes.rb +0 -1
  16. data/spec/dummy/db/schema.rb +2 -2
  17. data/spec/dummy/lib/seymour/admin_feed.rb +1 -1
  18. data/spec/dummy/lib/seymour/event_feed.rb +1 -1
  19. data/spec/dummy/lib/seymour/player_feed.rb +1 -1
  20. data/spec/dummy/lib/seymour/user_feed.rb +1 -1
  21. data/spec/generators/seymour/feed/feed_generator_spec.rb +22 -0
  22. data/spec/seymour/distributable_spec.rb +30 -6
  23. data/spec/seymour/{activity_feed_spec.rb → feed_spec.rb} +37 -6
  24. data/spec/seymour/redis_spec.rb +1 -1
  25. data/spec/spec_helper.rb +12 -12
  26. data/spec/support/capybara.rb +8 -0
  27. data/spec/support/{test_redis.rb → redis.rb} +0 -0
  28. metadata +46 -53
  29. data/app/assets/javascripts/seymour/application.js +0 -9
  30. data/app/assets/stylesheets/seymour/application.css +0 -7
  31. data/app/controllers/seymour/application_controller.rb +0 -4
  32. data/app/helpers/seymour/application_helper.rb +0 -4
  33. data/app/views/layouts/seymour/application.html.erb +0 -14
  34. 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::ActivityFeed
48
+ class TeamFeed < Seymour::Feed
49
49
  end
50
50
 
51
- class DashboardFeed < Seymour::ActivityFeed
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
@@ -21,7 +21,6 @@ RDoc::Task.new(:rdoc) do |rdoc|
21
21
  end
22
22
 
23
23
  APP_RAKEFILE = File.expand_path(".././spec/dummy/Rakefile", __FILE__)
24
- load 'rails/tasks/engine.rake'
25
24
 
26
25
  Bundler::GemHelper.install_tasks
27
26
 
@@ -0,0 +1,7 @@
1
+ Description:
2
+ The seymour:feed generator creates a named feed class in /app/models/feeds.
3
+
4
+ Examples:
5
+ rails generate seymour:feed Dashboard
6
+
7
+ file: app/models/feeds/dashboard_feed.rb
@@ -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
@@ -0,0 +1,2 @@
1
+ class <%= singular_name.camelize %>Feed < Seymour::Feed
2
+ end
@@ -1,13 +1,11 @@
1
- require "seymour/engine"
2
1
  require "seymour/version"
3
2
  require "seymour/redis"
4
- require "seymour/activity_feed"
3
+ require "seymour/feed"
5
4
  require "seymour/acts_as_activity"
6
5
  require "seymour/distributable"
7
6
  require "seymour/renderable"
8
- # require "seymour/render_controller"
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 ActivityFeed
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
- private
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
@@ -1,7 +1,6 @@
1
1
  require 'redis-namespace'
2
2
 
3
3
  module Seymour
4
-
5
4
  ## Courtesy of resque
6
5
  # Returns the current Redis connection. If none has been created, will
7
6
  # create a new one.
@@ -1,3 +1,3 @@
1
1
  module Seymour
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,2 @@
1
+ class TestFeed < Seymour::Feed
2
+ end
@@ -10,6 +10,7 @@ require "sprockets/railtie"
10
10
 
11
11
  Bundler.require
12
12
  require "seymour"
13
+ require "seymour/engine"
13
14
 
14
15
  module Dummy
15
16
  class Application < Rails::Application
@@ -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
@@ -1,4 +1,3 @@
1
1
  Rails.application.routes.draw do
2
-
3
2
  mount Seymour::Engine => "/seymour"
4
3
  end
@@ -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 "auditable_id"
18
- t.string "auditable_type"
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::ActivityFeed
1
+ class AdminFeed < Seymour::Feed
2
2
  end
@@ -1,2 +1,2 @@
1
- class EventFeed < Seymour::ActivityFeed
1
+ class EventFeed < Seymour::Feed
2
2
  end
@@ -1,2 +1,2 @@
1
- class PlayerFeed < Seymour::ActivityFeed
1
+ class PlayerFeed < Seymour::Feed
2
2
  end
@@ -1,2 +1,2 @@
1
- class UserFeed < Seymour::ActivityFeed
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::ActivityFeed do
3
+ describe Seymour::Feed do
4
4
 
5
5
  let(:owner) { mock_model(User) }
6
- let(:feed) { Seymour::ActivityFeed.new(owner) }
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::ActivityFeed.feed_classes.should include(EventFeed)
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::ActivityFeed.distribute(activity)
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::ActivityFeed.new(owner)
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::ActivityFeed.new(new_owner)
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)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Seymour::Redis" do
3
+ describe "Seymour.redis" do
4
4
 
5
5
  describe "redis" do
6
6
  it "can set a namespace through a url-like string" do
@@ -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
- # require "rails/test_help"
7
- Rails.backtrace_cleaner.remove_silencers!
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
- TestRedis::Server.start!(dir)
23
+ Rails.backtrace_cleaner.remove_silencers!
24
+ TestRedis::Server.start!(dir)
@@ -0,0 +1,8 @@
1
+ require 'capybara/rails'
2
+ require 'capybara/dsl'
3
+
4
+ RSpec.configure do |c|
5
+ c.include Capybara, :example_group => {
6
+ :file_path => /\bspec\/integration\//
7
+ }
8
+ end
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
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-19 00:00:00.000000000Z
12
+ date: 2011-10-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70358103560780 !ruby/object:Gem::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.1.1
21
+ version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70358103560780
24
+ version_requirements: *70116777384080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis-namespace
27
- requirement: &70358103559520 !ruby/object:Gem::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: 1.1.0
32
+ version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70358103559520
35
+ version_requirements: *70116777383560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70358103557760 !ruby/object:Gem::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: *70358103557760
46
+ version_requirements: *70116777383100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec-rails
49
- requirement: &70358103556520 !ruby/object:Gem::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: *70358103556520
57
+ version_requirements: *70116777382580
58
58
  - !ruby/object:Gem::Dependency
59
- name: rspec
60
- requirement: &70358103555440 !ruby/object:Gem::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: *70358103554120
68
+ version_requirements: *70116777382160
80
69
  - !ruby/object:Gem::Dependency
81
- name: steak
82
- requirement: &70358103552600 !ruby/object:Gem::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: *70358103552600
79
+ version_requirements: *70116777381700
91
80
  - !ruby/object:Gem::Dependency
92
- name: capybara
93
- requirement: &70358103551580 !ruby/object:Gem::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: *70358103551580
90
+ version_requirements: *70116777381280
102
91
  - !ruby/object:Gem::Dependency
103
92
  name: database_cleaner
104
- requirement: &70358103549920 !ruby/object:Gem::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: *70358103549920
101
+ version_requirements: *70116777380840
113
102
  - !ruby/object:Gem::Dependency
114
103
  name: factory_girl_rails
115
- requirement: &70358103548340 !ruby/object:Gem::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: *70358103548340
112
+ version_requirements: *70116777380280
124
113
  - !ruby/object:Gem::Dependency
125
114
  name: sqlite3
126
- requirement: &70358103546000 !ruby/object:Gem::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: *70358103546000
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
- - app/assets/javascripts/seymour/application.js
143
- - app/assets/stylesheets/seymour/application.css
144
- - app/controllers/seymour/application_controller.rb
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/test_redis.rb
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: -259286616321666436
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: -259286616321666436
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/test_redis.rb
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
- */
@@ -1,4 +0,0 @@
1
- module Seymour
2
- class ApplicationController < ActionController::Base
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module Seymour
2
- module ApplicationHelper
3
- end
4
- end
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Seymour</title>
5
- <%= stylesheet_link_tag "seymour/application" %>
6
- <%= javascript_include_tag "seymour/application" %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
@@ -1,2 +0,0 @@
1
- Seymour::Engine.routes.draw do
2
- end