【发布时间】:2017-05-12 00:38:31
【问题描述】:
我正在将系统从 EL 6 升级到 EL 7。我们有一个使用 ruby 设置 MySQL 数据库的应用程序。我对红宝石和宝石知之甚少,所以我很难做到这一点。在 EL 6 下,设置过程可以正常工作。在 CentOS 7 下,处理 rakefile 时出现以下错误:
为数据库适配器指定了“mysql”,但未加载 gem。添加
gem 'mysql'到您的 Gemfile
在 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 rpm,所以我想那里可能存在冲突,但很难说。
我的database.yml 文件如下所示:
adapter: mysql
encoding: utf8
database: mydatabase
username: root
password:
host: 127.0.0.1
port: 3306
【问题讨论】:
-
如果有 Gemfile,你通常会调用
gem install bundler; bundle install来设置环境。 -
我在 el6 系统或 el7 系统上找不到任何与 mysql 相关的 gem 文件。实际上,我在任何脚本中都没有看到对“gem”调用的引用。我只有 Rakefile 和 database.yml 以及 ruby 迁移脚本。我觉得其中一个 rpm,可能是 activerecord,正在做一些神奇的事情并使用它自己的 mysql 适配器。
-
Gemfile 将位于脚本的根目录中,名为
Gemfile。 -
没有。