popular 0.3.0 → 0.3.1
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.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDZmMzVhOWMxNzU4YTQ0YjlmMTQwODcyNzcyZDBmMTY3MTk5N2I0NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmRlZWFlMjNjZTRlZWQ5NjgxZGY1NWIzZDIxZjcxZjIyY2NjMWQ2Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTUzYjRjNzI2ZTk0YzFiZjA0NjU5YzQ0MzUzOWM2M2ZlMjM1M2JjMWYwYjcw
|
10
|
+
OTQ0YjM1MzljZTBmNWFkNDczNDAxMDVmMzk5ZGQxMTMzNDRhOTk3OGM3ZmFm
|
11
|
+
ZWZjYjlhYjE2NDJiZDhhZDI1OTAxOTVkMjIyZDNiNWRmMTgyYWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTdmODI0Njk3M2ZjYTFkNWYwM2FjODBlOTMyMTA2ZTk2MjE4NzhlZDRjNTFj
|
14
|
+
YjUxNjM2NmQ5MGRmZDk0ODM2MTJjZDg4YTEyZTNlYjcxNmVjYjZhMzkzODI3
|
15
|
+
MmZmOGFiZGE3MDllNGI4YzQwN2UyNzVlZTg3ZGVjYzI3YTY3MGQ=
|
data/README.md
CHANGED
@@ -3,12 +3,11 @@
|
|
3
3
|
[](https://travis-ci.org/thejchap/popular)
|
4
4
|
[](https://codeclimate.com/github/thejchap/popular)
|
5
5
|
[](https://codeclimate.com/github/thejchap/popular)
|
6
|
+
[](http://inch-pages.github.io/github/thejchap/popular)
|
6
7
|
[](https://gemnasium.com/thejchap/popular)
|
7
8
|
|
8
9
|
Popular is a friendship gem designed for Rails/ActiveRecord models.
|
9
10
|
|
10
|
-
### THIS IS A VERY YOUNG GEM. YOU HAVE BEEN WARNED
|
11
|
-
|
12
11
|
## Installation
|
13
12
|
|
14
13
|
Add this line to your application's Gemfile:
|
@@ -23,13 +22,61 @@ Or install it yourself as:
|
|
23
22
|
|
24
23
|
$ gem install popular
|
25
24
|
|
25
|
+
### Database Migration
|
26
|
+
|
27
|
+
Popular uses a friendships table to store friendship relationships.
|
28
|
+
To get up and running, use the following command:
|
29
|
+
|
30
|
+
rails g popular:migration
|
31
|
+
rake db:migrate
|
32
|
+
|
26
33
|
## Usage
|
27
34
|
|
28
|
-
|
35
|
+
### Model
|
36
|
+
|
37
|
+
To get started using Popular, simply add `popular` to your model, (ie: `app/models/user.rb`)
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
class User < ActiveRecord::Base
|
41
|
+
popular
|
42
|
+
end
|
43
|
+
|
44
|
+
@sam = User.create name: "Samuel"
|
45
|
+
@jackson = User.create name: "Jackson"
|
46
|
+
|
47
|
+
@sam.friends_with? @jackson #=> false
|
48
|
+
@sam.befriend @jackson
|
49
|
+
@sam.friends_with? @jackson #=> true
|
50
|
+
@sam.unfriend @jackson
|
51
|
+
@sam.friends_with? @jackson #=> false
|
52
|
+
```
|
53
|
+
|
54
|
+
### Callbacks
|
55
|
+
|
56
|
+
Popular provides callbacks that are fired around friendship creation. Available callbacks are:
|
57
|
+
- after_befriend
|
58
|
+
- before_befriend
|
59
|
+
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
class User < ActiveRecord::Base
|
63
|
+
popular
|
64
|
+
after_befriend :notify
|
65
|
+
|
66
|
+
def notify
|
67
|
+
puts "Friendship created successfully"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
@justin = User.create name: "Justin"
|
72
|
+
@jenny = User.create name: "Jenny"
|
73
|
+
|
74
|
+
@justin.befriend @jenny #=> "Friendship created successfully"
|
75
|
+
```
|
29
76
|
|
30
77
|
## Contributing
|
31
78
|
|
32
|
-
1. Fork it ( http://github.com
|
79
|
+
1. Fork it ( http://github.com/thejchap/popular/fork )
|
33
80
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
34
81
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
35
82
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rails/generators/migration'
|
2
|
+
|
3
|
+
module Popular
|
4
|
+
class MigrationGenerator < Rails::Generators::Base
|
5
|
+
include Rails::Generators::Migration
|
6
|
+
|
7
|
+
desc "Generates migration for popular (friendships table)"
|
8
|
+
|
9
|
+
def self.orm
|
10
|
+
Rails::Generators.options[:rails][:orm]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.source_root
|
14
|
+
File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.class.eql?(String)) )
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.orm_has_migration?
|
18
|
+
[:active_record].include? orm
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.next_migration_number(path)
|
22
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_migration_file
|
26
|
+
if self.class.orm_has_migration?
|
27
|
+
migration_template 'migration.rb', 'db/migrate/popular_migration'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class PopularMigration < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
create_table :friendships do |t|
|
4
|
+
|
5
|
+
t.references :popular_model, polymorphic: true
|
6
|
+
t.references :friend, polymorphic: true
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
|
11
|
+
add_index :friendships, [:popular_model_id, :popular_model_type]
|
12
|
+
add_index :friendships, [:friend_id, :friend_type]
|
13
|
+
end
|
14
|
+
|
15
|
+
def down
|
16
|
+
drop_table :friendships
|
17
|
+
end
|
18
|
+
end
|
data/lib/popular/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: popular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thejchap
|
@@ -152,6 +152,8 @@ files:
|
|
152
152
|
- LICENSE.txt
|
153
153
|
- README.md
|
154
154
|
- Rakefile
|
155
|
+
- lib/generators/popular/migration/migration_generator.rb
|
156
|
+
- lib/generators/popular/migration/templates/active_record/migration.rb
|
155
157
|
- lib/popular.rb
|
156
158
|
- lib/popular/extenders/popular.rb
|
157
159
|
- lib/popular/friendship.rb
|