seymour 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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