webring-rails 1.7.2 → 1.7.4

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: a98865565d0e12327382922de903a721178b48400b20c7c0a1cf20b1f278de74
4
- data.tar.gz: 8d707539b2a0e8191efd0394810163b984bf38aa2e1a5016d75bf0891d3d2322
3
+ metadata.gz: b3841de2893a8fd2b1ee27cf90b95bcb095ddebb266fa47f79a9b7c845b1e26a
4
+ data.tar.gz: 58c76857005b4cd7639f388f3426f10fe68b4a62dbe2f593b587b81b3fcc9d83
5
5
  SHA512:
6
- metadata.gz: f367e6a0b4fdf72458064c51a6fa38103717e849ad0f623ede4224dc3b0c22662a2edaab102a6bbacfe562b5b597019851dc88834936fe02ed9007b4440a03c5
7
- data.tar.gz: 138a86db76bd06d4960fe039c121f27bcd52fc7574bfbc325104a920382c78c3a8b73c8701786a4abc73d8cf2f3f9424fe58d8885d3379259a1620c5fd5f1872
6
+ metadata.gz: f65ae49b0328ff8c9256d1dbfc1e94dd05e21592a4be6f9eaf917b1755d888c6947ba78079181583a321f9aef89f493b98b415ee6a06775eb038b302ff7fd131
7
+ data.tar.gz: 6f0f3161a267c31e139d538886f0a89bb5a18e951279f17ce8c5de48e52fe6c2b9fdd123f4f22d19e3d0e1503f99ca8aed4178bd4b83fc62f5b5e995df75104c
@@ -31,29 +31,29 @@ module Webring
31
31
  # PATCH/PUT /webring/members/1
32
32
  def update
33
33
  if member.update(member_params)
34
- update_success_response
34
+ handle_update_success
35
35
  else
36
- update_error_response
36
+ handle_update_error
37
37
  end
38
38
  end
39
39
 
40
40
  # DELETE /webring/members/1
41
41
  def destroy
42
- member.destroy
42
+ member.destroy!
43
43
 
44
44
  redirect_to admin_panel_members_url, notice: 'Member was successfully destroyed.'
45
45
  end
46
46
 
47
47
  private
48
48
 
49
- def update_success_response
49
+ def handle_update_success
50
50
  respond_to do |format|
51
51
  format.html { redirect_to admin_panel_member_path(member), notice: 'Member was successfully updated.' }
52
52
  format.json { head :ok }
53
53
  end
54
54
  end
55
55
 
56
- def update_error_response
56
+ def handle_update_error
57
57
  respond_to do |format|
58
58
  format.html { render :edit, status: :unprocessable_entity }
59
59
  format.json { render json: { status: 'error', errors: member.errors }, status: :unprocessable_entity }
@@ -61,7 +61,7 @@ module Webring
61
61
  end
62
62
 
63
63
  def members
64
- @members ||= Member.all.order(created_at: :desc)
64
+ @members ||= Member.order(created_at: :desc)
65
65
  end
66
66
 
67
67
  def member
@@ -5,50 +5,46 @@ module Webring
5
5
  # If current member is the last, return the first member (ring concept)
6
6
  def find_next(source_member_uid)
7
7
  source_member = active.find_by(uid: source_member_uid)
8
- return first_active_member_by_creation unless source_member
8
+ return first_active_member unless source_member
9
9
 
10
- find_next_active_member(source_member) || first_active_member_by_creation
10
+ find_next_active_member(source_member) || first_active_member
11
11
  end
12
12
 
13
13
  # Find the previous member in the webring before the current one
14
14
  # If current member is the first, return the last member (ring concept)
15
15
  def find_previous(source_member_uid)
16
16
  source_member = active.find_by(uid: source_member_uid)
17
- return last_active_member_by_creation unless source_member
17
+ return last_active_member unless source_member
18
18
 
19
- find_previous_active_member(source_member) || last_active_member_by_creation
19
+ find_previous_active_member(source_member) || last_active_member
20
20
  end
21
21
 
22
22
  # Find a random member, excluding the current one if provided
23
23
  # If current member is the only one, return it
24
24
  def find_random(source_member_uid: nil)
25
- return active.order('RANDOM()').first if source_member_uid.blank?
25
+ scope = active
26
+ scope = scope.where.not(uid: source_member_uid) if source_member_uid.present?
26
27
 
27
- # Use exists? check to avoid loading records when not needed
28
- excluded_scope = active.where.not(uid: source_member_uid)
28
+ return scope.order('RANDOM()').first if scope.exists?
29
+ return active.find_by(uid: source_member_uid) if source_member_uid.present?
29
30
 
30
- if excluded_scope.exists?
31
- excluded_scope.order('RANDOM()').first
32
- else
33
- # if only one active member exists (the current one), return it
34
- active.find_by(uid: source_member_uid)
35
- end
31
+ nil
36
32
  end
37
33
 
38
34
  private
39
35
 
40
- def first_active_member_by_creation
41
- active.order(created_at: :asc).first
36
+ def first_active_member
37
+ @first_active_member ||= active.order(:created_at).first
42
38
  end
43
39
 
44
- def last_active_member_by_creation
45
- active.order(created_at: :desc).first
40
+ def last_active_member
41
+ @last_active_member ||= active.order(created_at: :desc).first
46
42
  end
47
43
 
48
44
  def find_next_active_member(source_member)
49
45
  active
50
46
  .where('created_at > ?', source_member.created_at)
51
- .order(created_at: :asc)
47
+ .order(:created_at)
52
48
  .first
53
49
  end
54
50
 
@@ -46,19 +46,19 @@ module Webring
46
46
  { line: 'class Member < ApplicationRecord', inject_options: { after: "class Member < ApplicationRecord\n" } }
47
47
  ]
48
48
 
49
- if File.exist?(member_model_path)
50
- content = File.read(member_model_path)
51
- options = inject_conditions.find { |condition| content.include?(condition[:line]) }&.fetch(:inject_options)
52
- return if options.nil? || options.empty?
49
+ return unless File.exist?(member_model_path)
53
50
 
54
- inject_into_file member_model_path, **options do
55
- " belongs_to :membership_request,\n" \
56
- " class_name: 'Webring::MembershipRequest',\n" \
57
- " foreign_key: :webring_membership_request_id,\n" \
58
- " optional: true,\n" \
59
- " inverse_of: :member\n" \
60
- "\n"
61
- end
51
+ content = File.read(member_model_path)
52
+ options = inject_conditions.find { |condition| content.include?(condition[:line]) }&.fetch(:inject_options)
53
+ return if options.blank?
54
+
55
+ inject_into_file member_model_path, **options do
56
+ " belongs_to :membership_request,\n" \
57
+ " class_name: 'Webring::MembershipRequest',\n" \
58
+ " foreign_key: :webring_membership_request_id,\n" \
59
+ " optional: true,\n" \
60
+ " inverse_of: :member\n" \
61
+ "\n"
62
62
  end
63
63
  end
64
64
 
@@ -1,3 +1,3 @@
1
1
  module Webring
2
- VERSION = '1.7.2'.freeze
2
+ VERSION = '1.7.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webring-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shkoda
@@ -113,11 +113,11 @@ files:
113
113
  - lib/webring-rails.rb
114
114
  - lib/webring/engine.rb
115
115
  - lib/webring/version.rb
116
- homepage: https://github.com/cybergizer-hq/webring_rails
116
+ homepage: https://github.com/cybergizer-hq/webring-rails
117
117
  licenses:
118
118
  - MIT
119
119
  metadata:
120
- homepage_uri: https://github.com/cybergizer-hq/webring_rails
120
+ homepage_uri: https://github.com/cybergizer-hq/webring-rails
121
121
  post_install_message:
122
122
  rdoc_options: []
123
123
  require_paths: