my_feeds 0.1.1 → 1.0.0

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