태스크에 대한 테스트가 있나요? 보이지 않네요. 명백한 수정 사항이 될 수 있는 것이 하나 있긴 하지만, 기존 테스트를 보완할 방법이 없고, 파괴적이지 않게 테스트할 쉬운 방법도 없습니다. 그래서 불안하네요…
index 0761c4712a..63f49155f3 100644
--- a/lib/tasks/uploads.rake
+++ b/lib/tasks/uploads.rake
@@ -129,12 +129,12 @@ def migrate_from_s3
Post
.where("user_id > 0")
- .where("raw LIKE '%.s3%.amazonaws.com/%' OR raw LIKE '%(upload://%'")
+ .where("raw LIKE '%.s3%.amazonaws.com/%' OR raw LIKE '%#{SiteSetting.Upload.absolute_base_url}%' OR raw LIKE '%(upload://%'")
.find_each do |post|
begin
updated = false
- post.raw.gsub!(/(\/\/[\w.-]+amazonaws\.com\/(original|optimized)\/([a-z0-9]+\/)+\h{40}([\w.-]+)?)/i) do |url|
+ post.raw.gsub!(/(\/\/[\w.-]+(amazonaws\.com|#{Regexp.quote(SiteSetting.s3_endpoint)})\/(original|optimized)\/([a-z0-9]+\/)+\h{40}([\w.-]+)?)/i) do |url|
begin
if filename = guess_filename(url, post.raw)
file = FileHelper.download("http:#{url}", max_file_size: max_file_size, tmp_file_name: "from_s3", follow_redirect: true)
또한, 경험상 모든 이미지가 이미 최적화되었음에도 불구하고, 파일을 이동하는 동안 50GB(원본+최적화 파일 총 96GB)의 모든 이미지를 다시 최적화해야 한다고 판단하여 10일 동안 그 작업을 수행할 것 같고, 그 동안 우리 사이트 전체의 이메일 알림이 꺼질 것 같습니다. 좋은 테스트 방법이 없어서, 그것이 사실인지 여부에 대해 질문했습니다. 만약 사실이라면, 이미 최적화된 이미지를 단순히 복사하는 우회 방법이 있는지 알고 싶습니다.
MinIO Client를 사용하여 모든 파일을 로컬 시스템으로 쉽게 복사할 수 있습니다. 모든 이미지를 다시 최적화하지 않고 파일을 제자리에 놓고 데이터베이스를 새 위치를 가리키도록 수정하는 것이 얼마나 어려운지 궁금합니다…