has_friendship 1.1.8 → 1.2.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.
- checksums.yaml +4 -4
- data/db/migrate/4_add_unique_index_to_friendships.rb +10 -1
- data/lib/has_friendship/engine.rb +22 -0
- data/lib/has_friendship/friendship.rb +15 -1
- data/lib/has_friendship/version.rb +1 -1
- metadata +74 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c88cce7cf824cf2d39d31e64367971f3bbbffd5bd7a26a48a93ed185070333b8
|
|
4
|
+
data.tar.gz: b70eead1df81b0bd3ef2bb66768c62b7f202a2a66bba6bf45da1132ff92cba94
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 441c8b09e56cad0b242dc8b0966ee9ff1b6eb452f5a2079cf680ebad68f19a9d2d7205e51f28c4cae8e42e4ccd99c098298b8cf2a4e4c8d37adf49ea47bcb57f
|
|
7
|
+
data.tar.gz: 27bb2c1c8e447ccd13afcda01ee7ecd833964bdd0b78e7d15c91df625c99c416fecf286dc077e46cb55e5d5658f3cb9e0c507d2842a8f34da9d65419127aa62e
|
|
@@ -10,7 +10,16 @@ AddUniqueIndexToFriendships.class_eval do
|
|
|
10
10
|
def self.up
|
|
11
11
|
return if index_exists?(:friendships, [:friendable_id, :friend_id])
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
options = { unique: true }
|
|
14
|
+
|
|
15
|
+
adapter_name = connection.adapter_name.downcase
|
|
16
|
+
if adapter_name.include?('mysql') || adapter_name.include?('postgres')
|
|
17
|
+
adapter_name.include?('postgis')
|
|
18
|
+
# These are the only DB adapters that support an index algorithm.
|
|
19
|
+
options[:algorithm] = :concurrently
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
add_index :friendships, [:friendable_id, :friend_id], **options
|
|
14
23
|
end
|
|
15
24
|
|
|
16
25
|
def self.down
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
module HasFriendship
|
|
2
2
|
class Engine < ::Rails::Engine
|
|
3
|
+
# Don't bother with isolate_namespace; we're only working with
|
|
4
|
+
# one table here.
|
|
5
|
+
#
|
|
3
6
|
# isolate_namespace HasFriendship
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# NOTE ABOUT DATABASE MIGRATIONS
|
|
10
|
+
#
|
|
11
|
+
# This Gem uses the `has_friendship:install:migrations` Rake task,
|
|
12
|
+
# which is automatically provided by Rails::Engine. That Rake task
|
|
13
|
+
# will copy the migration files from the Gem's db/migrate/
|
|
14
|
+
# directory into the host app (with newly-generated timestamps).
|
|
15
|
+
#
|
|
16
|
+
# We use this `install:migrations` approach to provide developer
|
|
17
|
+
# control. The application developer must be allowed to inspect
|
|
18
|
+
# and modify the migration files (e.g. to change the foreign key
|
|
19
|
+
# type from INTEGER to a UUID) before running `db:migrate`.
|
|
20
|
+
#
|
|
21
|
+
# Do not use the Rails Engine's `initializer :append_migrations`
|
|
22
|
+
# feature in this Gem. Otherwise, the application developer would
|
|
23
|
+
# loose that control.
|
|
24
|
+
#
|
|
25
|
+
|
|
4
26
|
end
|
|
5
27
|
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
module HasFriendship
|
|
2
|
+
FRIENDSHIP_ENUM_VALUES = { pending: 0, requested: 1, accepted: 2, blocked: 3 }
|
|
3
|
+
|
|
2
4
|
class Friendship < ActiveRecord::Base
|
|
3
5
|
validate :satisfy_custom_conditions
|
|
4
6
|
|
|
@@ -10,8 +12,20 @@ module HasFriendship
|
|
|
10
12
|
friendable.try(:on_friendship_destroyed, record)
|
|
11
13
|
end
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
attr_reader :status_was
|
|
16
|
+
|
|
17
|
+
if Rails.gem_version >= Gem::Version.new('7.0')
|
|
18
|
+
stats_def = [ :status, FRIENDSHIP_ENUM_VALUES ]
|
|
19
|
+
else
|
|
20
|
+
stats_def = [ status: FRIENDSHIP_ENUM_VALUES ]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
enum *stats_def do
|
|
14
24
|
event :accept do
|
|
25
|
+
before do
|
|
26
|
+
@status_was = self.status
|
|
27
|
+
end
|
|
28
|
+
|
|
15
29
|
transition [:pending, :requested] => :accepted
|
|
16
30
|
|
|
17
31
|
after do
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: has_friendship
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sung Won Cho
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activesupport
|
|
@@ -17,9 +16,6 @@ dependencies:
|
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: 4.2.0
|
|
20
|
-
- - "<"
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: '6.1'
|
|
23
19
|
type: :runtime
|
|
24
20
|
prerelease: false
|
|
25
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -27,9 +23,6 @@ dependencies:
|
|
|
27
23
|
- - ">="
|
|
28
24
|
- !ruby/object:Gem::Version
|
|
29
25
|
version: 4.2.0
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '6.1'
|
|
33
26
|
- !ruby/object:Gem::Dependency
|
|
34
27
|
name: activemodel
|
|
35
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -37,9 +30,6 @@ dependencies:
|
|
|
37
30
|
- - ">="
|
|
38
31
|
- !ruby/object:Gem::Version
|
|
39
32
|
version: 4.2.0
|
|
40
|
-
- - "<"
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '6.1'
|
|
43
33
|
type: :runtime
|
|
44
34
|
prerelease: false
|
|
45
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -47,9 +37,6 @@ dependencies:
|
|
|
47
37
|
- - ">="
|
|
48
38
|
- !ruby/object:Gem::Version
|
|
49
39
|
version: 4.2.0
|
|
50
|
-
- - "<"
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
52
|
-
version: '6.1'
|
|
53
40
|
- !ruby/object:Gem::Dependency
|
|
54
41
|
name: activerecord
|
|
55
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -57,9 +44,6 @@ dependencies:
|
|
|
57
44
|
- - ">="
|
|
58
45
|
- !ruby/object:Gem::Version
|
|
59
46
|
version: 4.2.0
|
|
60
|
-
- - "<"
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: '6.1'
|
|
63
47
|
type: :runtime
|
|
64
48
|
prerelease: false
|
|
65
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -67,9 +51,6 @@ dependencies:
|
|
|
67
51
|
- - ">="
|
|
68
52
|
- !ruby/object:Gem::Version
|
|
69
53
|
version: 4.2.0
|
|
70
|
-
- - "<"
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: '6.1'
|
|
73
54
|
- !ruby/object:Gem::Dependency
|
|
74
55
|
name: stateful_enum
|
|
75
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -155,7 +136,7 @@ dependencies:
|
|
|
155
136
|
- !ruby/object:Gem::Version
|
|
156
137
|
version: '0'
|
|
157
138
|
- !ruby/object:Gem::Dependency
|
|
158
|
-
name:
|
|
139
|
+
name: coveralls_reborn
|
|
159
140
|
requirement: !ruby/object:Gem::Requirement
|
|
160
141
|
requirements:
|
|
161
142
|
- - ">="
|
|
@@ -196,7 +177,76 @@ dependencies:
|
|
|
196
177
|
- - ">="
|
|
197
178
|
- !ruby/object:Gem::Version
|
|
198
179
|
version: '0'
|
|
199
|
-
|
|
180
|
+
- !ruby/object:Gem::Dependency
|
|
181
|
+
name: base64
|
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - ">="
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '0'
|
|
187
|
+
type: :development
|
|
188
|
+
prerelease: false
|
|
189
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
+
requirements:
|
|
191
|
+
- - ">="
|
|
192
|
+
- !ruby/object:Gem::Version
|
|
193
|
+
version: '0'
|
|
194
|
+
- !ruby/object:Gem::Dependency
|
|
195
|
+
name: drb
|
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
|
197
|
+
requirements:
|
|
198
|
+
- - ">="
|
|
199
|
+
- !ruby/object:Gem::Version
|
|
200
|
+
version: '0'
|
|
201
|
+
type: :development
|
|
202
|
+
prerelease: false
|
|
203
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
204
|
+
requirements:
|
|
205
|
+
- - ">="
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: '0'
|
|
208
|
+
- !ruby/object:Gem::Dependency
|
|
209
|
+
name: mutex_m
|
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - ">="
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '0'
|
|
215
|
+
type: :development
|
|
216
|
+
prerelease: false
|
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - ">="
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '0'
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: benchmark
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - ">="
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: '0'
|
|
229
|
+
type: :development
|
|
230
|
+
prerelease: false
|
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
232
|
+
requirements:
|
|
233
|
+
- - ">="
|
|
234
|
+
- !ruby/object:Gem::Version
|
|
235
|
+
version: '0'
|
|
236
|
+
- !ruby/object:Gem::Dependency
|
|
237
|
+
name: appraisal
|
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
|
239
|
+
requirements:
|
|
240
|
+
- - ">="
|
|
241
|
+
- !ruby/object:Gem::Version
|
|
242
|
+
version: '0'
|
|
243
|
+
type: :development
|
|
244
|
+
prerelease: false
|
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
246
|
+
requirements:
|
|
247
|
+
- - ">="
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: '0'
|
|
200
250
|
email:
|
|
201
251
|
- mikeswcho@gmail.com
|
|
202
252
|
executables: []
|
|
@@ -219,7 +269,6 @@ homepage: https://github.com/sungwoncho/has_friendship
|
|
|
219
269
|
licenses:
|
|
220
270
|
- MIT
|
|
221
271
|
metadata: {}
|
|
222
|
-
post_install_message:
|
|
223
272
|
rdoc_options: []
|
|
224
273
|
require_paths:
|
|
225
274
|
- lib
|
|
@@ -234,8 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
234
283
|
- !ruby/object:Gem::Version
|
|
235
284
|
version: '0'
|
|
236
285
|
requirements: []
|
|
237
|
-
rubygems_version: 3.
|
|
238
|
-
signing_key:
|
|
286
|
+
rubygems_version: 3.6.9
|
|
239
287
|
specification_version: 4
|
|
240
288
|
summary: Add social network friendship features to your Active Record models.
|
|
241
289
|
test_files: []
|