File Download Service
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza leyendo config/storage.yml y config/environments/production.rb; después, localiza FileDownloader, ChecksumVerifier, el flujo de adjuntos de ActiveStorage y el modelo TopicFile. Se considera terminado cuando las descargas se reanudan desde archivos parciales, los fallos de checksum limpian los archivos y reintentan la descarga, el almacenamiento local está configurado para su uso sin conexión y se han abordado los requisitos de limpieza y copia de seguridad de TopicFile.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
GET /api/v1/files/{id} with resume support
- Create FileDownloader service:
class FileDownloader
def download(file_id, expected_checksum:, resume_from: 0)
# Downloads to temp file
# Supports Range header for resume
# Returns path to downloaded file
end
end
- Download to temp directory (tmp/downloads/)
- Track partial download progress for resume capability
- Return downloaded file path for attachment
Verify downloaded files match manifest checksums
- Create ChecksumVerifier service:
class ChecksumVerifier
def verify!(file_path, expected_sha256)
actual = Digest::SHA256.file(file_path).hexdigest
expected = expected_sha256.delete_prefix("sha256:")
raise ChecksumMismatchError unless actual == expected
end
end
- Consider using MD5 since active storage uses MD5 for checksums
- Integrate verification before ActiveStorage attachment
- On mismatch: delete file, retry download (up to 3 attempts)
Ensure proper ActiveStorage setup for offline operation
- Verify config/storage.yml uses local disk:
local:
service: Disk
root: <%= Rails.root.join("storage") %> - Set in config/environments/production.rb:
config.active_storage.service = :local - Configure blob cleanup: old blobs purged when TopicFile destroyed
- Add storage/ to backup strategy
- Lenguaje dominante
- HTML
- Estrellas
- 4
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de rubyforgood/skillrx-beacon
-
cross-app sync
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Error handlingAbiertocross-app sync
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
cross-app sync
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
-
Sync OrchestratorAbiertocross-app sync
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Orphan Cleanup ServiceAbiertocross-app sync
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de rubyforgood/skillrx-beacon
Issues similares
-
mqtt_paho: transformer.DeleteExtension and DeleteAttribute make WritePubMessage failPosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
cloudevents/sdk-go#1349 ·
-
getChaosHub always returns totalFaults "0"Posiblemente ocupada @Aryanbhargava18 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
litmuschaos/litmus#5710 ·
Los mantenedores suelen responder en 3 días
-
fix(core): a config section with all keys commented out crashes startupPosiblemente ocupada @Aryanbhargava18 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
kubeflow/mcp-server#512 ·
Los mantenedores suelen responder en 1 día
-
vtselect: data race in Tempo search tags APIs for invalid TraceQL queriesPosiblemente ocupada @Shubham19032004 la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
VictoriaMetrics/VictoriaTraces#304 ·
Los mantenedores suelen responder en 1 día
-
DBFS append mode silently overwrites existing filesPosiblemente ocupada @IlyaKhalafi la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
fsspec/filesystem_spec#2429 ·
Los mantenedores suelen responder en 1 día