服务器上安装的ruby版本过于老旧导致的myslq2
无法正常load?
老教程的ruby版本是 ruby 2.4.10p364 (2020-03-31 revision 67879) [x86_64-linux-gnu]
这个版本都无法兼容 rails 5
说不定是这个原因...看看如何升级服务器的ruby版本?
顺便说一句
用ruby -v
看ruby版本
用rails -v
查看rails版本
用mysql --version
查看安装的mysql版本
嗯?等等...报错一直显示mysql2不存在...难道是因为...服务器装的是mysql
而不是mysql2
...
不对 看到这句
Installing the libmysqlclient-dev
gives you the necessary files to compile the mysql2
gem which is what Rails will use to connect to MySQL when you setup your Rails app.
所以是有途径的...这个libmysqlclient-dev
我也是安装了的...
所以最后果然还是服务器ruby version
的锅吗?
Newer versions should work as well. Just make sure to use the same version as your Production machine.
sudo apt update
sudo apt install ruby-full
直接用着两行代码 把服务器的ruby版本提到最高了
还是报错...唉
发现服务器 「安装 Nginx + Passenger 网站服务器」这个步骤都有点问题
去查比较新的步骤操作看看
比如 cat /etc/apt/sources.list.d/passenger.list
需要看到的结果是 deb https://oss-binaries.phusionpassenger.com/apt/passenger focal main
注意最后两个词是 focal main
而不是bionic main
把服务器又重整了一遍, 然后出现了新的报错
哈哈哈哈 估计果然需要本机跟服务器环境全部一致 不然各种出问题啊 好麻烦
然后看到这个 感觉有救
Using Rbenv. A script that allows you to have multiple Ruby versions installed on the same machine.
看来还有个配套的...估计两个都要安装比较好, 果然还是老老实实去查符合最新版本的Deploying a Rails App on Ubuntu 20.04
之类的比较好 教程太老了...
Using RVM (ruby enVironment manager). A heavier and more feature-packed script that allows you to install, manage, and work with multiple ruby versions.
嗯,现在认真看看内容 这两都是用来安装ruby到Ubuntu上的方法而已...唉...
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
git clone https://github.com/rbenv/rbenv-vars.git ~/.rbenv/plugins/rbenv-vars
exec $SHELL
rbenv install 2.6.7
rbenv global 2.6.7
ruby -v
# ruby 2.6.7
用这招把服务器的deploy用户旗下ruby改成了2.6.7
版本了
然后要改bundler
# This installs the latest Bundler, currently 2.x.
gem install bundler
# For older apps that require Bundler 1.x, you can install it as well.
gem install bundler -v 1.17.3
# Test and make sure bundler is installed correctly, you should see a version number.
bundle -v
# Bundler version 2.0
If it tells you bundle not found, run rbenv rehash and try again.
尝试列出各种的gem报错
run gem update
看到各种报错 列举一下
首先是libv8
的
ERROR: Error installing libv8:
ERROR: Failed to build gem native extension.
好像 v8
也出问题
/Users/RealAnalysis/.rvm/gems/ruby-2.6.3-version/gems/libv8-6.7.288.46.1/ext/libv8/builder.rb:79:in `block in setup_build_deps!': unable to fetch v8 source (RuntimeError)
再就是 directory
也有事
Warnings:
Conflicting directory /Users/RealAnalysis/.rvm/gems/ruby-2.6.3-version/gems/libv8-6.7.288.46.1/vendor/v8 moved to /Users/RealAnalysis/.rvm/gems/ruby-2.6.3-version/gems/libv8-6.7.288.46.1/vendor/_bad_scm/v8RpNZpu.
看着像是rvm没有安装好?!
嗯 突然一个新的想法 会不会是RoR跟更新后的Mac系统出了什么冲突导致的?!Mac系统自动升级容易出一堆bug啊我记得...总之 不管什么情况 debug到底!
不放弃!
参考到一个日文blog跑了一个
mysql.server status
发现数据库的服务器没在run的
mysql.server start
发现报错
sudo rm -rf /usr/local/var/mysql
brew reinstall mysql
跑完后再尝试
mysql.server start
至少mysql的server正常运行了
虽然报错还是一样的
再跟mysql2玩儿几天 学够本了 实在不行为了行程考虑换成pg数据库
试看看哈哈哈哈
尝试Debug这么久,最后都查看了Rails101的教程去了,看到一句话...
果断开本机的server 一看...运行出问题...
为了查看数据库问题 本机跑了一下
这个报错也是迷人的...
看来在debug过程中 乱改了太多东西 都互相冲突了
懒得再去修不知道三天内乱改了哪步导致的,全部砍掉
git branch -D deploy