你可能已经听说了,几周前Rails社区出现了短暂的恐慌和混乱,当时mimemagicgem的版本号在解决许可问题时被取消。以前版本的宝石由于许可证不正确而被删除,不再能下载。
这一变化影响了数以千计的Rails应用程序--甚至是像我关于Rails测试的入门书籍《用RSpec进行日常Rails测试》的样本源那样的小程序。这本书的主题本身并不依赖于mimemagic,但我使用Paperclip gem来增加文件上传支持,以演示如何测试这种功能--Paperclip(至少我使用的版本)依赖于mimemagic。
由于本书示例代码的结构,我不打算在这个时候更新它以解决版本的变化。每一章都建立在前一章的基础上。在示例代码中,每一章都有一个长期运行的git分支来处理这个问题。对核心应用程序进行修改需要对第一章的分支进行修改;然后,我将这些修改合并到每一个后续分支。由于许多章节的分支会对项目的Gemfile和Gemfile.lock进行修改,这种方法很容易出错。而且我更愿意花时间去思考,在更现代的Rails版本中,教程的版本会是什么样子。
围绕问题开展工作
负责该书日文翻译的团队负责人Junichi Ito报告了一个解决方法。不要运行bundle install 来设置初始应用程序,而是运行bundle update mimemagic 。这将拉下一个具有更新许可证的mimemagic版本,这样你就可以完成书中的练习。
非常感谢Junichi在这个问题上的勤奋,并分享了解决方案。我为这无疑给你们中的许多人带来的混乱和挫折感到抱歉,并感谢你们的支持。