筆者使用 Redmine 進行個人的專案管理工作, 今天使用命令列進行 Redmine 應用程式維護時, 突然看到這個警告訊息: /usr/lib64/ruby/strscan.so: warning: already initialized constant StringScanner::Version, 一時之間也不知道訊息是從何而生, 如果讀者也有碰到類似錯誤, 可以繼續往下閱讀。
分析
因為訊息產生的來源很明顯是 strscan 這個 package, 所以我們先看看系統中到底有那些東西:
[root@centos8 ~]# gem list | grep str
stringio (3.0.1, default: 0.0.1)
strscan (3.0.1, default: 1.0.0)
懷疑可能是 strscan 不小心被更新之後產生的訊息。
解決方案
先將 strscan 移除後, 在使用 –default 參數進行 strscan 更新:
[root@centos8 ~]# gem uninstall strscan
Successfully uninstalled strscan-3.0.1
[root@centos8 ~]# gem update strscan --default
Updating installed gems
Updating strscan
Fetching: strscan-1.0.0.gem (100%)
Successfully installed strscan-1.0.0
進行以上的步驟之後, Redmine 應用程式 Console 的警告訊息就消失囉, 有相同症狀的讀者不妨依樣畫葫蘆試試看。