my_feeds 0.1.1 → 1.0.0

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/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source 'http://rubygems.org'
2
2
 
3
3
  gem 'rspec'
4
4
  gem 'rails'
data/README.md CHANGED
@@ -47,15 +47,15 @@ and
47
47
  ```
48
48
  class YourCustomModel < ActiveRecord::Base
49
49
  include MyFeeds::Associate #make sure include this module
50
- self.feed_polymorphic = :likeable #and set this, in this case is likeable, it should same as the polymorphic belongs_to
50
+ init_feeds_polymorphic = :likeable #and set this, in this case is likeable, it should same as the polymorphic belongs_to
51
51
 
52
- #same as self.feed_polymorphic
52
+ #same as feeds_polymorphic
53
53
  belongs_to :likeable, polymorphic: true
54
54
  end
55
55
 
56
56
  # you should create a migration like below
57
- # in this case, this column name is likeable_identify, it depends on feed_polymorphic
58
- #add_column :your_customs, :likeable_identify, :string, null: false
57
+ # in this case, this column name is likeable_identity, it depends on feeds_polymorphic
58
+ #add_column :your_customs, :likeable_identity, :string, null: false
59
59
  ```
60
60
 
61
61
  ####feeder
@@ -0,0 +1,23 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module MyFeeds
4
+ module Generators
5
+ class LikesGenerator < ActiveRecord::Generators::Base
6
+
7
+ argument :name, :type => :string, :default => 'likes'
8
+
9
+ def self.source_root
10
+ @source_root ||= File.join(File.dirname(__FILE__), '../templates')
11
+ end
12
+
13
+ def create_migration
14
+ migration_template 'likes_migration.rb', 'db/migrate/likes_migration.rb'
15
+ end
16
+
17
+ def create_model
18
+ template "like.rb", File.join('app/models', "like.rb")
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,22 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module MyFeeds
4
+ module Generators
5
+ class MyFeedsGenerator < ActiveRecord::Generators::Base
6
+
7
+ argument :name, :type => :string, :default => 'my_feeds'
8
+
9
+ def self.source_root
10
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
11
+ end
12
+
13
+ def create_migration
14
+ migration_template 'feeds_migration.rb', 'db/migrate/my_feeds_migration.rb'
15
+ end
16
+
17
+ def create_model
18
+ template "feed.rb", File.join('app/models', "feed.rb")
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  class Feed < ActiveRecord::Base
2
- include MyFeeds::Identify
2
+ include MyFeeds::Identity
3
3
  attr_accessible :source_id, :source_type, :event, :target_id, :target_type
4
4
 
5
5
  #verify event uniqueness
@@ -3,7 +3,7 @@ class MyFeedsMigration < ActiveRecord::Migration
3
3
  create_table :feeds do |t|
4
4
  #necessarily
5
5
  t.references :source, :polymorphic => true, :null => false
6
- t.string :source_identify, null: false
6
+ t.string :source_identity, null: false
7
7
  t.string :event, null: false
8
8
 
9
9
  #not necessarily, but maybe you need
@@ -13,6 +13,6 @@ class MyFeedsMigration < ActiveRecord::Migration
13
13
  t.timestamps
14
14
  end
15
15
 
16
- add_index :feeds, :source_identify
16
+ add_index :feeds, :source_identity
17
17
  end
18
18
  end
@@ -1,8 +1,8 @@
1
1
  class LikesMigration < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :likes do |t|
4
- #this table must have xxx_identify, xxx_id, xxx_type 3 columns
5
- t.string :likeable_identify, null: false
4
+ #this table must have xxx_identity, xxx_id, xxx_type 3 columns
5
+ t.string :likeable_identity, null: false
6
6
  t.references :likeable, :polymorphic => true, :null => false
7
7
 
8
8
  #you maybe need change this column
@@ -3,8 +3,8 @@ require "my_feeds/version"
3
3
  module MyFeeds
4
4
  autoload :Feeder, 'my_feeds/feeder'
5
5
  autoload :Eater, 'my_feeds/eater'
6
- autoload :Identify, 'my_feeds/identify'
6
+ autoload :Identity, 'my_feeds/identity'
7
7
 
8
8
  #alias
9
- Associate = Identify
9
+ Associate = Identity
10
10
  end
@@ -3,7 +3,7 @@ module MyFeeds
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  def feeds_for scope
6
- Feed.where source_identify: scope.select(scope.klass.polymorphic_identify_column)
6
+ Feed.where source_identity: scope.select(scope.klass.polymorphic_identity_column)
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,39 @@
1
+ module MyFeeds
2
+ module Identity
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_save :save_feed_identity
7
+ init_feeds_polymorphic :source if self == Feed
8
+ delegate :polymorphic_identity_column, :polymorphic_id_column, :polymorphic_type_column, to: :"self.class"
9
+ end
10
+
11
+ module ClassMethods
12
+ def feed_polymorphic
13
+ @_feed_polymorphic
14
+ end
15
+
16
+ def init_feeds_polymorphic polymorphic
17
+ @_feed_polymorphic = polymorphic
18
+ class_eval %Q{
19
+ def save_feed_identity
20
+ self.#{polymorphic_identity_column} = "#\{#{polymorphic_id_column}.to_s\}:#\{#{polymorphic_type_column}.to_s.underscore\}"
21
+ end
22
+ protected :save_feed_identity
23
+ }
24
+ end
25
+
26
+ def polymorphic_identity_column
27
+ :"#{feed_polymorphic}_identity"
28
+ end
29
+
30
+ def polymorphic_id_column
31
+ :"#{feed_polymorphic}_id"
32
+ end
33
+
34
+ def polymorphic_type_column
35
+ :"#{feed_polymorphic}_type"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module MyFeeds
2
- VERSION = "0.1.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = MyFeeds::VERSION
9
9
  spec.authors = ["jjy"]
10
10
  spec.email = ["jjyruby@gmail.com"]
11
- spec.description = %q{Help you implement feeds / timeline in rails application.}
11
+ spec.description = %q{Help you implement feeds / timeline / public activity in rails application.}
12
12
  spec.summary = %q{my_feeds provide feed model and some helper methods, allow you to customize.}
13
13
  spec.homepage = "https://github.com/jjyr/my_feeds"
14
14
  spec.license = "MIT"
@@ -1,5 +1,5 @@
1
1
  class Feed < ActiveRecord::Base
2
- include MyFeeds::Identify
2
+ include MyFeeds::Identity
3
3
  attr_accessible :source_id, :source_type, :event, :target_id, :target_type
4
4
 
5
5
  #verify event uniqueness
@@ -1,6 +1,7 @@
1
1
  class Like < ActiveRecord::Base
2
2
  include MyFeeds::Associate
3
- self.feed_polymorphic = :likeable
3
+
4
+ init_feeds_polymorphic :likeable
4
5
  #attr_accessible
5
6
 
6
7
  belongs_to :likeable, polymorphic: true
@@ -3,7 +3,7 @@ ActiveRecord::Schema.define(:version => 0) do
3
3
  create_table "feeds", :force => true do |t|
4
4
  t.integer "source_id", :null => false
5
5
  t.string "source_type", :null => false
6
- t.string "source_identify", :null => false
6
+ t.string "source_identity", :null => false
7
7
  t.string "event", :null => false
8
8
  t.integer "target_id"
9
9
  t.string "target_type"
@@ -11,10 +11,10 @@ ActiveRecord::Schema.define(:version => 0) do
11
11
  t.datetime "updated_at", :null => false
12
12
  end
13
13
 
14
- add_index "feeds", ["source_identify"], :name => "index_feeds_on_source_identify"
14
+ add_index "feeds", ["source_identity"], :name => "index_feeds_on_source_identity"
15
15
 
16
16
  create_table "likes", :force => true do |t|
17
- t.string "likeable_identify", :null => false
17
+ t.string "likeable_identity", :null => false
18
18
  t.integer "likeable_id", :null => false
19
19
  t.string "likeable_type", :null => false
20
20
  t.integer "user_id"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_feeds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,41 +9,41 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-13 00:00:00.000000000 Z
12
+ date: 2013-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
19
  - - ~>
19
20
  - !ruby/object:Gem::Version
20
21
  version: '1.3'
21
- none: false
22
- prerelease: false
23
22
  type: :development
23
+ prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ~>
27
28
  - !ruby/object:Gem::Version
28
29
  version: '1.3'
29
- none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
33
34
  requirements:
34
35
  - - ! '>='
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
37
- none: false
38
- prerelease: false
39
38
  type: :development
39
+ prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
41
42
  requirements:
42
43
  - - ! '>='
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
- none: false
46
- description: Help you implement feeds / timeline in rails application.
46
+ description: Help you implement feeds / timeline / public activity in rails application.
47
47
  email:
48
48
  - jjyruby@gmail.com
49
49
  executables: []
@@ -55,17 +55,17 @@ files:
55
55
  - LICENSE.txt
56
56
  - README.md
57
57
  - Rakefile
58
+ - lib/generators/my_feeds/likes_generator.rb
59
+ - lib/generators/my_feeds_generator.rb
60
+ - lib/generators/templates/feed.rb
61
+ - lib/generators/templates/feeds_migration.rb
62
+ - lib/generators/templates/like.rb
63
+ - lib/generators/templates/likes_migration.rb
58
64
  - lib/my_feeds.rb
59
65
  - lib/my_feeds/eater.rb
60
66
  - lib/my_feeds/feeder.rb
61
- - lib/my_feeds/identify.rb
67
+ - lib/my_feeds/identity.rb
62
68
  - lib/my_feeds/version.rb
63
- - lib/rails/generators/my_feeds/likes_generator.rb
64
- - lib/rails/generators/my_feeds_generator.rb
65
- - lib/rails/generators/templates/like_model.rb
66
- - lib/rails/generators/templates/likes_migration.rb
67
- - lib/rails/generators/templates/migration.rb
68
- - lib/rails/generators/templates/model.rb
69
69
  - my_feeds.gemspec
70
70
  - spec/models/feed.rb
71
71
  - spec/models/like.rb
@@ -82,17 +82,17 @@ rdoc_options: []
82
82
  require_paths:
83
83
  - lib
84
84
  required_ruby_version: !ruby/object:Gem::Requirement
85
+ none: false
85
86
  requirements:
86
87
  - - ! '>='
87
88
  - !ruby/object:Gem::Version
88
89
  version: '0'
89
- none: false
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
91
92
  requirements:
92
93
  - - ! '>='
93
94
  - !ruby/object:Gem::Version
94
95
  version: '0'
95
- none: false
96
96
  requirements: []
97
97
  rubyforge_project:
98
98
  rubygems_version: 1.8.25
@@ -1,43 +0,0 @@
1
- module MyFeeds
2
- module Identify
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- before_save :save_feed_identify
7
- self.feed_polymorphic = self == Feed ? :source : default_feed_polymorphic
8
- delegate :default_feed_polymorphic, :polymorphic_identify_column, :polymorphic_id_column, :polymorphic_type_column, to: :"self.class"
9
- end
10
-
11
- module ClassMethods
12
- def feed_polymorphic
13
- @_feed_polymorphic
14
- end
15
-
16
- def feed_polymorphic= polymorphic
17
- @_feed_polymorphic = polymorphic
18
- class_eval %Q{
19
- def save_feed_identify
20
- self.#{polymorphic_identify_column} = "#\{#{polymorphic_id_column}.to_s\}@#\{#{polymorphic_type_column}.to_s.underscore\}"
21
- end
22
- protected :save_feed_identify
23
- }
24
- end
25
-
26
- def default_feed_polymorphic
27
- self.to_s.underscore
28
- end
29
-
30
- def polymorphic_identify_column
31
- :"#{feed_polymorphic}_identify"
32
- end
33
-
34
- def polymorphic_id_column
35
- :"#{feed_polymorphic}_id"
36
- end
37
-
38
- def polymorphic_type_column
39
- :"#{feed_polymorphic}_type"
40
- end
41
- end
42
- end
43
- end
@@ -1,29 +0,0 @@
1
- module MyFeeds
2
- module Generators
3
- class LikesGenerator < Rails::Generators::Base
4
-
5
- include Rails::Generators::Migration
6
-
7
- def self.source_root
8
- @source_root ||= File.join(File.dirname(__FILE__), '../templates')
9
- end
10
-
11
- def create_migration_file
12
- migration_template 'likes_migration.rb', 'db/migrate/likes_migration.rb'
13
- end
14
-
15
- def self.next_migration_number(dirname)
16
- if ActiveRecord::Base.timestamped_migrations
17
- Time.now.utc.strftime("%Y%m%d%H%M%S")
18
- else
19
- "%.3d" % (current_migration_number(dirname) + 1)
20
- end
21
- end
22
-
23
- def create_model
24
- template "like_model.rb", File.join('app/models', "like.rb")
25
- end
26
- end
27
- end
28
- end
29
-
@@ -1,28 +0,0 @@
1
- module MyFeeds
2
- module Generators
3
- class MyFeedsGenerator < Rails::Generators::Base
4
-
5
- include Rails::Generators::Migration
6
-
7
- def self.source_root
8
- @source_root ||= File.join(File.dirname(__FILE__), 'templates')
9
- end
10
-
11
- def create_migration_file
12
- migration_template 'migration.rb', 'db/migrate/my_feeds_migration.rb'
13
- end
14
-
15
- def self.next_migration_number(dirname)
16
- if ActiveRecord::Base.timestamped_migrations
17
- Time.now.utc.strftime("%Y%m%d%H%M%S")
18
- else
19
- "%.3d" % (current_migration_number(dirname) + 1)
20
- end
21
- end
22
-
23
- def create_model
24
- template "model.rb", File.join('app/models', "feed.rb")
25
- end
26
- end
27
- end
28
- end