Ruby on Rails 應用程式 console 出現 warning: already initialized constant StringScanner::Version 警告訊息該怎麼辦?

筆者使用 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 的警告訊息就消失囉, 有相同症狀的讀者不妨依樣畫葫蘆試試看。

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料