has_friendship 1.1.7 → 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 +101 -13
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,25 +1,35 @@
|
|
|
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
|
-
name:
|
|
13
|
+
name: activesupport
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
18
|
version: 4.2.0
|
|
20
|
-
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 4.2.0
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: activemodel
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
21
31
|
- !ruby/object:Gem::Version
|
|
22
|
-
version:
|
|
32
|
+
version: 4.2.0
|
|
23
33
|
type: :runtime
|
|
24
34
|
prerelease: false
|
|
25
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -27,9 +37,20 @@ dependencies:
|
|
|
27
37
|
- - ">="
|
|
28
38
|
- !ruby/object:Gem::Version
|
|
29
39
|
version: 4.2.0
|
|
30
|
-
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: activerecord
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 4.2.0
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
31
52
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
53
|
+
version: 4.2.0
|
|
33
54
|
- !ruby/object:Gem::Dependency
|
|
34
55
|
name: stateful_enum
|
|
35
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -115,7 +136,7 @@ dependencies:
|
|
|
115
136
|
- !ruby/object:Gem::Version
|
|
116
137
|
version: '0'
|
|
117
138
|
- !ruby/object:Gem::Dependency
|
|
118
|
-
name:
|
|
139
|
+
name: coveralls_reborn
|
|
119
140
|
requirement: !ruby/object:Gem::Requirement
|
|
120
141
|
requirements:
|
|
121
142
|
- - ">="
|
|
@@ -156,7 +177,76 @@ dependencies:
|
|
|
156
177
|
- - ">="
|
|
157
178
|
- !ruby/object:Gem::Version
|
|
158
179
|
version: '0'
|
|
159
|
-
|
|
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'
|
|
160
250
|
email:
|
|
161
251
|
- mikeswcho@gmail.com
|
|
162
252
|
executables: []
|
|
@@ -179,7 +269,6 @@ homepage: https://github.com/sungwoncho/has_friendship
|
|
|
179
269
|
licenses:
|
|
180
270
|
- MIT
|
|
181
271
|
metadata: {}
|
|
182
|
-
post_install_message:
|
|
183
272
|
rdoc_options: []
|
|
184
273
|
require_paths:
|
|
185
274
|
- lib
|
|
@@ -194,8 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
194
283
|
- !ruby/object:Gem::Version
|
|
195
284
|
version: '0'
|
|
196
285
|
requirements: []
|
|
197
|
-
rubygems_version: 3.
|
|
198
|
-
signing_key:
|
|
286
|
+
rubygems_version: 3.6.9
|
|
199
287
|
specification_version: 4
|
|
200
288
|
summary: Add social network friendship features to your Active Record models.
|
|
201
289
|
test_files: []
|