雖然自己是 Redmine 繁體中文翻譯的維護人員,也在 5.x 發佈之前就已經翻譯過這個錯誤訊息並提交至儲存庫中,但是沒認真看待過 Default queue adapter which is well suited only for dev/test changed 錯誤代表的意義,直到自己的 Redmine 網站升級後,才發現這個警告很是礙眼,所以才來研究看看到底這是甚麼問題?
問題的根源
原來 Redmine 使用的預設 queue adapter 是 Active Job Async adapter ,由於這個 adapter 是使用 memory 來儲存資料,因此非常容易因為各種原因導致無法回復的資料遺失,因此在 Production 安裝中,不建議使用這個 adpter ,所以才會出現警示。
鴕鳥解決方案
翻了一下原始處理這個警示的 issue: Add check in Redmine information page if default queue adapter is used in production ,裡面有建議應該使用 Sidekiq 作為 queue adapter ,不過由於這個 adapter 必須配合 redis 來運作,自己也不想為了喝一杯牛奶,結果就因此養了一頭牛,所以就把自己當成鴕鳥,只把 queue adapter 換成另外一個以 memory 來儲存資料的 sucker_punch ,讓檢查的機制認為已經不是使用 Async adapter 了,換一個眼不見為淨的輕鬆愉快。
正解
其實,因為自己的 Redmine 網站只是用來作為私人的用途,順便作為 zh-TW 翻譯的測試網站,所以不管是使用 Async adapter 、 Sidekiq adapter 還是 sucker_punch adapter 應該都是可以接受的方式,如果你的網站是非常關鍵的 Redmine 網站,是公司或團隊賴以運作的基礎,納建議還是乖乖的使用 Sidekiq adapter 才是比較安全的選擇。