FIX actioncable job
This commit is contained in:
		
							parent
							
								
									3cae1d4eb7
								
							
						
					
					
						commit
						df6bddfb8d
					
				| 
						 | 
				
			
			@ -9,8 +9,9 @@ module ApplicationCable
 | 
			
		|||
 | 
			
		||||
    private
 | 
			
		||||
      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])
 | 
			
		||||
          puts "############### find_verified_user success! ###############"
 | 
			
		||||
          current_user
 | 
			
		||||
        else
 | 
			
		||||
          reject_unauthorized_connection
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
class MirrorProjectChannel < ApplicationCable::Channel
 | 
			
		||||
  def subscribed
 | 
			
		||||
    Rails.logger.info "################### channel params: #{params}"
 | 
			
		||||
    # @project = Project.find_by_identifier params[:id]
 | 
			
		||||
    stream_from "channel_room_#{params[:id]}"
 | 
			
		||||
  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
 | 
			
		||||
    if gitea_repository
 | 
			
		||||
      repo&.project&.update_columns(gpid: gitea_repository["id"])
 | 
			
		||||
      repo&.mirror&.update_columns(status: Mirror.statuses[:succeeded])
 | 
			
		||||
 | 
			
		||||
      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}"
 | 
			
		||||
      repo&.mirror&.succeeded!
 | 
			
		||||
      puts "############ mirror status: #{repo.mirror.status} ############"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,8 +4,9 @@ class Mirror < ApplicationRecord
 | 
			
		|||
  # 0: 同步镜像成功;1: 正在同步镜像;2: 同步失败; 默认值为0
 | 
			
		||||
  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])
 | 
			
		||||
    update_column(:status, status)
 | 
			
		||||
| 
						 | 
				
			
			@ -14,4 +15,9 @@ class Mirror < ApplicationRecord
 | 
			
		|||
  def numerical_for_status
 | 
			
		||||
    self.class.name.constantize.statuses["#{self.status}"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
    def websocket_boardcast
 | 
			
		||||
      BroadcastMirrorRepoMsgJob.perform_later(self.repository.id)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue