rbenv
首先,使用rbenv而不是rvm,关于如何从rvm过渡到rbenv可以参考:
中文:https://www.jianshu.com/p/a14c09a915ae
英文:https://gist.github.com/traumverloren/fa5c30056319992c4dab
openssl
然后是openssl,较老版本的ruby使用的是1.0.2t之类的版本,最新则是1.1.1d之类。
rvm下对openssl的处理方式不再说明,rbenv有更加通用的方法可以解决。
需要注意的是,在使用openssl version
查出来如果是libressl,可以不处理(主要是没有一劳永逸的终极处理方式)
其实也可以参考:https://www.jianshu.com/p/3b1444a1e1de
但我最终发现这种处理方式也是一次性的,每次都需要手动switch
附手动安装openssl方法参考
brew install rbenv/tap/openssl@1.0
或者简单地 brew install openssl
ruby
以安装ruby2.3.1为例,执行
rbenv install 2.3.1
rbenv会自动去下载对应的openssl版本,但也会存在一种情况,即本地已经安装了可用的openssl版本,但rbenv仍然在从远端抓取并且下载不下来,因此收到报错
error: failed to download openssl-1.0.2u.tar.gz
这时可以尝试:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl" rbenv install 2.3.1
无论装老的2.3.1还是最新的2.7.1,这个方法都可行。
gemset
设置项目的ruby版本和gemset,这里就不累述了,参见rvm的文档即可。下面是ruby-china的指南作为参考:https://ruby-china.org/wiki/rbenv-guide
使用rbenv version
检查当前ruby版本设置
使用rbenv gemset active
检查当前gemset设置
bundler
最新的bundle会对ruby版本有要求,比如ruby2.3.0以上,而需要在较老版本的ruby中使用,如ruby2.0.0,可通过指定版本安装来解决,例如bundle1.17.3
gem install bundler -v '1.17.3'
1.17.3、1.16.2、1.15.3都是比较靠谱的版本(吧?)
mysql
如果ruby版本过老,而mysql版本比较高,则会连不上mysql。
一种方式是把mysql降下来,例如降到5.6以下,另一种方式是选一个合适的mysql2的gem版本。
对于ruby2.0.0和mysql5.7,目前实践下来,可用的mysql2版本为0.3.17,即将Gemfile中的mysql2改为'0.3.17'版本
gem 'mysql2', '0.3.17'
bundle install
对于已有的老项目,在完成上述操作后,直接执行bundle install
即可
如果是新项目应该不存在以上问题啦!装新的ruby和新的rails就好啦!
网友评论