GSoC 2022 CircuitVerse | 7주 및 8주 보고서

설명



이번 주에 나는 CircuitVerse로의 공지된 통합을 완료하는 작업을 했습니다. 이것은 내가 배운 것처럼 가장 도전적이고 생산적인 주 중 하나였습니다.
  • Rails 콘솔의 효과적인 사용.
  • 액티브레코드
  • 마이그레이션.
  • 컨트롤러.
  • 레일을 봅니다.

  • 그래서 지난 회의에서 멘토들에게 알림 기능의 데모를 보여줬고 그들은 UI에 약간의 변경이 있고 활동 알림의 이전 데이터를 마이그레이션한다고 말했습니다.

    도우미 메서드, UI 및 일부 정리 작업을 완료했습니다. 하지만 저에게 가장 어려운 작업은 한 테이블에서 구성이 다른 다른 테이블로 데이터를 마이그레이션하는 것이었습니다. Aboobacker는 마이그레이션에 대한 쿼리가 포함된 마이그레이션 파일SQL을 공유했지만 이 작업에서 수행해야 하는 것보다 비교적 간단했습니다!

    그래서 저는 오래된 알림을 렌더링하기 위한 많은 솔루션을 생각해냈습니다.
  • before_action에 대해 load_old_notifications 메서드를 사용하여 user 필터를 추가할 수 있다고 생각했습니다. 그래서 old_notification 테이블에 migrated라는 새 열을 기본값false으로 생성하므로 사용자가 로그인할 때마다 , load_old_notifications가 실행되고 old_notification 필드가 migrated인 경우 false를 체크인하고 notification 테이블에 대한 새 데이터를 생성하고 migratedtrue에서 old_notification로 표시합니다. 테이블.
  • 하지만 ActivityNotification gem을 제거할 생각을 하고 있는 만큼 매우 복잡하고 마이그레이션하는 동안 알림 경로를 가져오는 데 필요한 모델 메서드가 있으므로 이 솔루션을 삭제하고 다음과 다음으로 이동했지만 실패했습니다. 마지막으로 ActiveRecords에서 migration를 사용할 솔루션을 제시합니다(작동하지만 바람직하지는 않음). 내 마이그레이션 파일은 다음과 같습니다.

  • class PopulateNotificationData < ActiveRecord::Migration[7.0]
      include ActivityNotification
      def change
        Notification.find_each do |data|
          newnotification = NoticedNotification.first_or_initialize(
            :recipient_type => data.target_type,
            :recipient_id => data.target_id,
            :type => "PreviousNotification",
            :params => {
              user_id: data.notifier_id,
              path: data.notifiable_path,
              message: data.notifiable.printable_notifiable_name(data.target),
              type: data.notifiable_type
            },
            :read_at => data.opened_at
          )
          newnotification.save!
        end
      end
    end
    


    I need to change it in SQL query.



    그래서 4일 ​​정도 걸렸지만 그만한 가치가 있었고 실패에서 많은 것을 배웠습니다.

    이번 2주 동안 나는 또한:
  • 중간평가 합격
  • GSoC의 첫 번째 단계에 대해 CircuitVerse/Blog에 내 첫 번째 블로그를 게시합니다.
  • 첫 번째 오프라인 해커톤에 참석하여 멋진 사람들을 만났습니다.

  • 다음 주 계획:


  • 전체 사양 테스트 케이스
  • 마이그레이션 완료
  • 모바일 앱에서 push notification 작업을 시작합니다.
  • 좋은 웹페이지 즐겨찾기