has_friendship 1.1.8 → 1.2.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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e20071df795f101aa2094be0905f86da5ad60d054db8c53273d8aab2f2ae72e2
4
- data.tar.gz: dcabee55a10aa221ef939e4cb16c49e5d34dcbf8d42bfb1b3d671f95ce941291
3
+ metadata.gz: 13eb70587325d65d16b6ddb7a5d2d1c31ea7820363cf263eb4519b6a6a0ae087
4
+ data.tar.gz: 2589815aa21a588236ab240f10b29b68e8fbb4a99c93dcdda1d49a47ed44fdba
5
5
  SHA512:
6
- metadata.gz: 181496a60ca7f54a628b21b1452433ab008b4233f08dabc67efbcd3db2b06b45a22efc48f392adab45168f8410bdb94770c7bdb741d227fb64b09907f75ff103
7
- data.tar.gz: 549f33d9e1511faaa528200985231efbc3f841fecb10fa2c604758b14e82b61648647b3479fee4cc47c2ed4ed24021fe83b79934f10fa18f535cc1bf60743ba0
6
+ metadata.gz: 00366d386441bf4bbfd90ffc527e563d4296dd40d1597e97de8a3db93c47eb88745014859aa73af25ce5cea23ed0d4ccb1e78ec38b3fa0bb2d0fcbd4827f285b
7
+ data.tar.gz: 51ef8240e5efb99bf76d0d0d731d71932c8062e51ac84ce24d753001b22c16f0c4262f567b6f17adc2a158e6ea0daaf62ae4897526b235354ea4487c01ba5d57
@@ -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
- add_index :friendships, [:friendable_id, :friend_id], unique: true, algorithm: :concurrently
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
@@ -77,12 +77,12 @@ module HasFriendship
77
77
 
78
78
  def block_friend(friend)
79
79
  on_relation_with(friend) do |one, other|
80
- HasFriendship::Friendship.find_unblocked_friendship(one, other).block!
80
+ HasFriendship::Friendship.find_unblocked_friendship(one, other).block_by(self)
81
81
  end
82
82
  end
83
83
 
84
84
  def unblock_friend(friend)
85
- return unless has_blocked(friend)
85
+ return unless has_blocked?(friend)
86
86
  on_relation_with(friend) do |one, other|
87
87
  HasFriendship::Friendship.find_blocked_friendship(one, other).destroy
88
88
  end
@@ -101,7 +101,7 @@ module HasFriendship
101
101
 
102
102
  private
103
103
 
104
- def has_blocked(friend)
104
+ def has_blocked?(friend)
105
105
  HasFriendship::Friendship.find_one_side(self, friend).blocker_id == self.id
106
106
  end
107
107
 
@@ -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
- enum status: { pending: 0, requested: 1, accepted: 2, blocked: 3 } do
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
@@ -20,10 +34,6 @@ module HasFriendship
20
34
  end
21
35
 
22
36
  event :block do
23
- before do
24
- self.blocker_id = self.friendable.id
25
- end
26
-
27
37
  after do
28
38
  friendable.on_friendship_blocked(self)
29
39
  end
@@ -31,6 +41,11 @@ module HasFriendship
31
41
  end
32
42
  end
33
43
 
44
+ def block_by(blocker)
45
+ self.blocker_id = blocker.id
46
+ self.block!
47
+ end
48
+
34
49
  def self.relation_attributes(one, other, status: nil)
35
50
  attr = {
36
51
  friendable_id: one.id,
@@ -1,3 +1,3 @@
1
1
  module HasFriendship
2
- VERSION = "1.1.8"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_friendship
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sung Won Cho
8
- autorequire:
8
+ - Paul Walrath
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.2.0
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6.1'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 4.2.0
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6.1'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: activemodel
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +31,6 @@ dependencies:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
33
  version: 4.2.0
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '6.1'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,9 +38,6 @@ dependencies:
47
38
  - - ">="
48
39
  - !ruby/object:Gem::Version
49
40
  version: 4.2.0
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '6.1'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: activerecord
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -57,9 +45,6 @@ dependencies:
57
45
  - - ">="
58
46
  - !ruby/object:Gem::Version
59
47
  version: 4.2.0
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '6.1'
63
48
  type: :runtime
64
49
  prerelease: false
65
50
  version_requirements: !ruby/object:Gem::Requirement
@@ -67,9 +52,6 @@ dependencies:
67
52
  - - ">="
68
53
  - !ruby/object:Gem::Version
69
54
  version: 4.2.0
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '6.1'
73
55
  - !ruby/object:Gem::Dependency
74
56
  name: stateful_enum
75
57
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +137,7 @@ dependencies:
155
137
  - !ruby/object:Gem::Version
156
138
  version: '0'
157
139
  - !ruby/object:Gem::Dependency
158
- name: coveralls
140
+ name: coveralls_reborn
159
141
  requirement: !ruby/object:Gem::Requirement
160
142
  requirements:
161
143
  - - ">="
@@ -196,9 +178,79 @@ dependencies:
196
178
  - - ">="
197
179
  - !ruby/object:Gem::Version
198
180
  version: '0'
199
- description:
181
+ - !ruby/object:Gem::Dependency
182
+ name: base64
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: drb
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: mutex_m
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: benchmark
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: appraisal
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
200
251
  email:
201
252
  - mikeswcho@gmail.com
253
+ - paul@walrath.ca
202
254
  executables: []
203
255
  extensions: []
204
256
  extra_rdoc_files: []
@@ -219,7 +271,6 @@ homepage: https://github.com/sungwoncho/has_friendship
219
271
  licenses:
220
272
  - MIT
221
273
  metadata: {}
222
- post_install_message:
223
274
  rdoc_options: []
224
275
  require_paths:
225
276
  - lib
@@ -234,8 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
285
  - !ruby/object:Gem::Version
235
286
  version: '0'
236
287
  requirements: []
237
- rubygems_version: 3.0.3
238
- signing_key:
288
+ rubygems_version: 3.6.9
239
289
  specification_version: 4
240
290
  summary: Add social network friendship features to your Active Record models.
241
291
  test_files: []