" ruby​​gem mysql错误:gem未加载" CentOS升级后

时间:2017-05-10 04:57:02

标签: ruby centos

我正在将系统从EL 6升级到EL 7.我们有一个使用ruby来设置MySQL数据库的应用程序。我对红宝石和宝石非常非常了解,所以我很难实现这一目标。在EL 6下,设置过程正常。在CentOS 7下,处理rakefile时出现以下错误:

  

指定' mysql'对于数据库适配器,但未加载gem。加   {Geverfile gem 'mysql'

6岁以下,我没有看到使用gem list安装任何MySQL gem文件,但设置过程正常并正确生成我们的数据库。

在7下,我可以手动运行:gem install mysql --with-mysql-config=/usr/lib64/mysql/mysql_config。 然后,安装脚本工作。

我正在通过rpm安装大部分所需的gems / ruby​​应用程序。

我有:

ruby-2.0.0.648-29.el7.x86_64
rubygem-rake-0.9.6-29.el7.noarch
rubygem-activesupport-4.2.5.2-2.fc24.noarch
rubygems-2.0.14.1-29.el7.noarch
rubygem-activemodel-4.2.5.2-1.fc24.noarch
rubygem-activerecord-4.2.5.2-1.fc24.noarch
ruby-mysql-2.8.2-1.el7.x86_64

ruby​​-mysql创建/usr/local/lib64/ruby/site_ruby/mysql.so

mysql.so库是什么提供MySQL适配器还是还有其他有效提供mysql gem的东西?令人困惑的是,我不必在EL 6中做任何事情,但必须在EL 7中专门安装它。

这是一个路径问题还是来源的重大变化?我显然从Fedora中提取了activesupport和activerecord rpms,所以我想可能存在冲突,但这很难说。

我的database.yml文件如下所示:

adapter: mysql
encoding: utf8
database: mydatabase
username: root
password:
host: 127.0.0.1
port: 3306

2 个答案:

答案 0 :(得分:0)

请尝试使用mysql2 gem:

在你的Gemfile中:

gem 'mysql2'

和database.yml:

adapter: mysql2

希望这会有所帮助。

答案 1 :(得分:0)

所以我不确定为什么原始脚本中从未有过gemfile。正如我在OP中提到的,一个基本的解决方案是运行gem install mysql,但这很奇怪,因为之前没有必要。

我认为发生了什么: 在EL6下,ruby-mysql rpm将mysql.so放在正确的位置,基本上发出了一个gem install命令。我所拥有的EL7版本没有在rpm中调用正确的安装宏。

我做了什么来解决这个问题: 我使用gem2rpm(这么棒的rpm /包)来生成rubygem-mysql规范文件。

https://github.com/fedora-ruby/gem2rpm

gem2rpm --fetch mysql(获取宝石) gem2rpm -T> rubygem-mysql.spec.template gem2rpm -t ruby​​gem-.spec.template mysql-2.9.1.gem> rubygem-mysql.spec

您必须在生成后稍微修改spec文件,然后使用它来指定模板以正确构建spec文件以满足您的需要。

然后只需使用rpmbuild实际生成rpm / srpm。

gem list现在显示了mysql,并且安装脚本正常工作。