我正在将系统从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
答案 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 rubygem-.spec.template mysql-2.9.1.gem> rubygem-mysql.spec
您必须在生成后稍微修改spec文件,然后使用它来指定模板以正确构建spec文件以满足您的需要。
然后只需使用rpmbuild实际生成rpm / srpm。
gem list现在显示了mysql,并且安装脚本正常工作。