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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbe4f080c364b0e9adb51aaef984861de76df9a5aaee2bca0140d49e08efe884
4
- data.tar.gz: 17650e465472b216a3d1db1352831bf147c5f109c06370563ead90ad81f8e98d
3
+ metadata.gz: c88cce7cf824cf2d39d31e64367971f3bbbffd5bd7a26a48a93ed185070333b8
4
+ data.tar.gz: b70eead1df81b0bd3ef2bb66768c62b7f202a2a66bba6bf45da1132ff92cba94
5
5
  SHA512:
6
- metadata.gz: b63ba1f0bf1bdc53da3755c8ecbdbc0487e7f2832c3200e89f8ddc61965d5043130d9e4a761fa886ef4c5d7721cb69c63bfa50559a2111757ecf7afbdaf447a7
7
- data.tar.gz: 017d259e9fdd50b16c1a26c555f264742e23aec906c3141e444cf78b21bb87f7ea32652b491f6fdd3be02671db7f8907d138d8e79019b4bfcc405e9a33041b2c
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
- 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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module HasFriendship
2
- VERSION = "1.1.7"
2
+ VERSION = "1.2.0"
3
3
  end
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.1.7
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: 2019-09-12 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rails
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: 6.0.0
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: 6.0.0
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: coveralls
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
- description:
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.0.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: []