gem pristine [GEMNAME ...] [options]
作用:
比较已经安装的 gem 和缓存的.gem file, 如果和缓存的 .gem 不匹配,则恢复原始的文件 如果修改过已经安装的 gem 包,pristine 将会恢复它。所有的扩展会 rebuild,所有的 bin 如果发现有更改会重新生成。 如果缓存的文件不存在,则重新下载。
详细参考:http://guides.rubygems.org/command-reference/#gem-pristine
例子:
mysql 升级到了 5.7.9
原有 rails 项目使用 mysql2,运行 rake db:migrate
会报错:
Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
发现新安装的 mysql 其实使用的是 libmysqlclient.20.dylib,版本不一致。
解决方案:http://stackoverflow.com/questions/33772047/library-not-loaded-usr-local-lib-libmysqlclient-18-dylib
$ gem pristine mysql2
之后继续 rake db:migrate
,遇到
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'performance_schema.session_variables' doesn't exist: SHOW VARIABLES LIKE 'character_set_database'
需要升级数据库 http://stackoverflow.com/questions/31967527/table-performance-schema-session-variables-doesnt-exist
$ mysql_upgrade -u root -p --force
然后重启 mysql,ok。