FIX actioncable job
This commit is contained in:
parent
3cae1d4eb7
commit
df6bddfb8d
|
@ -9,8 +9,9 @@ module ApplicationCable
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_verified_user
|
def find_verified_user
|
||||||
puts "############### cookies.signed[:signed_user_id]: #{cookies.signed[:user_id]}"
|
puts "############### cookies.signed[:user_id]: #{cookies.signed[:user_id]}"
|
||||||
if current_user = User.find_by(id: cookies.signed[:user_id])
|
if current_user = User.find_by(id: cookies.signed[:user_id])
|
||||||
|
puts "############### find_verified_user success! ###############"
|
||||||
current_user
|
current_user
|
||||||
else
|
else
|
||||||
reject_unauthorized_connection
|
reject_unauthorized_connection
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
class MirrorProjectChannel < ApplicationCable::Channel
|
class MirrorProjectChannel < ApplicationCable::Channel
|
||||||
def subscribed
|
def subscribed
|
||||||
Rails.logger.info "################### channel params: #{params}"
|
Rails.logger.info "################### channel params: #{params}"
|
||||||
# @project = Project.find_by_identifier params[:id]
|
|
||||||
stream_from "channel_room_#{params[:id]}"
|
stream_from "channel_room_#{params[:id]}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
class BroadcastMirrorRepoMsgJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(repo_id)
|
||||||
|
puts "############ BroadcastMirrorRepoMsgJob start ############ #{repo_id}"
|
||||||
|
repo = Repository.find_by(id: repo_id)
|
||||||
|
return if repo.blank?
|
||||||
|
|
||||||
|
project = repo.project
|
||||||
|
|
||||||
|
json_data = {
|
||||||
|
mirror_status: repo.mirror_status,
|
||||||
|
mirror_num: repo.mirror_num,
|
||||||
|
mirror_url: repo.mirror_url,
|
||||||
|
first_sync: repo.first_sync?,
|
||||||
|
identifier: repo.identifier,
|
||||||
|
name: project.name,
|
||||||
|
id: project.id,
|
||||||
|
type: project.numerical_for_project_type
|
||||||
|
}
|
||||||
|
puts "############ broadcast start.......... "
|
||||||
|
puts "############ broadcast channel_name: channel_room_#{project.id}"
|
||||||
|
puts "############ broadcast project data: #{json_data} "
|
||||||
|
|
||||||
|
cable_result = ActionCable.server.broadcast "channel_room_#{project.id}", project: json_data
|
||||||
|
|
||||||
|
puts "############ broadcast result: #{cable_result == 1 ? 'successed' : 'failed'} "
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,24 +10,8 @@ class MigrateRemoteRepositoryJob < ApplicationJob
|
||||||
gitea_repository = Gitea::Repository::MigrateService.new(token, params).call
|
gitea_repository = Gitea::Repository::MigrateService.new(token, params).call
|
||||||
if gitea_repository
|
if gitea_repository
|
||||||
repo&.project&.update_columns(gpid: gitea_repository["id"])
|
repo&.project&.update_columns(gpid: gitea_repository["id"])
|
||||||
repo&.mirror&.update_columns(status: Mirror.statuses[:succeeded])
|
repo&.mirror&.succeeded!
|
||||||
|
puts "############ mirror status: #{repo.mirror.status} ############"
|
||||||
project = repo.project
|
|
||||||
|
|
||||||
json_data = {
|
|
||||||
mirror_status: repo.mirror_status,
|
|
||||||
mirror_num: repo.mirror_num,
|
|
||||||
mirror_url: repo.mirror_url,
|
|
||||||
first_sync: repo.first_sync?,
|
|
||||||
identifier: repo.identifier,
|
|
||||||
name: project.name,
|
|
||||||
id: project.id,
|
|
||||||
type: project.numerical_for_project_type
|
|
||||||
}
|
|
||||||
puts "############ broadcast start.......... ############"
|
|
||||||
cable_result = ActionCable.server.broadcast "channel_room_#{repo.identifier}", project: json_data
|
|
||||||
|
|
||||||
puts "############ room_channel_#{repo.identifier} result : #{cable_result}"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,8 +4,9 @@ class Mirror < ApplicationRecord
|
||||||
# 0: 同步镜像成功;1: 正在同步镜像;2: 同步失败; 默认值为0
|
# 0: 同步镜像成功;1: 正在同步镜像;2: 同步失败; 默认值为0
|
||||||
enum status: { succeeded: 0, waiting: 1, failed: 2 }
|
enum status: { succeeded: 0, waiting: 1, failed: 2 }
|
||||||
|
|
||||||
belongs_to :repository, foreign_key: :repo_id
|
after_update :websocket_boardcast, if: :saved_change_to_status?
|
||||||
|
|
||||||
|
belongs_to :repository, foreign_key: :repo_id
|
||||||
|
|
||||||
def set_status!(status=Mirror.statuses[:succeeded])
|
def set_status!(status=Mirror.statuses[:succeeded])
|
||||||
update_column(:status, status)
|
update_column(:status, status)
|
||||||
|
@ -14,4 +15,9 @@ class Mirror < ApplicationRecord
|
||||||
def numerical_for_status
|
def numerical_for_status
|
||||||
self.class.name.constantize.statuses["#{self.status}"]
|
self.class.name.constantize.statuses["#{self.status}"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def websocket_boardcast
|
||||||
|
BroadcastMirrorRepoMsgJob.perform_later(self.repository.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue