mysql - 将 Ruby 版本与 MySql 客户端混合使用时出现问题

标签 mysql ruby-on-rails-3 ruby-on-rails-3.2 rvm ubuntu-10.04

我的基本堆栈设置是 Ubuntu 10.04 Lucid,以及 Apache2 和 Rails 3.x(见下文)。它还使用在专用服务器上运行的 MySQL 数据库,因此我只需要在 Rails 服务器上安装 MySQL 客户端,并且我使用的是 mysql2 gem。

我正在将 Rails 应用程序从 Rails 3.0 升级到 Rails 3.2,一切都相当顺利(一些代码更改和一些 Assets 重组),除了我需要从 Ruby 1.8.7 升级到更高版本对于邮件 gem。

我想我应该跳过 Ruby 1.9.3,直接跳到 Ruby 2.0.0。

我也在咬紧牙关,采用 rvm 来管理 ruby​​ 环境,我也在更新到 Passenger 4,因为它说这与 rvm 一起玩得更好,也因为我有另一个 Rails 应用程序,我想暂时保留 Ruby 1.8.7。

一切都进行得相当顺利——在安装过程中一切似乎都安装没有错误。

我在应用程序目录层次结构的顶部添加了一个 .ruby-version 文件(指定 2.0.0),这似乎有效。

我还在同一目录中有 .ruby-gemset,指定了一个应用程序名称,并且我已经使用 bundle install 安装了必要的 gem。

但是,当我重新启动 Apache 并尝试访问 Rails 应用程序时,我在返回的网页上收到 Passenger 报告的错误,

Web application could not be started

/home/username/.rvm/gems/ruby-2.0.0-p481@myapp/gems/mysql2-0.3.16/lib/mysql2/mysql2.so: [BUG] Segmentation fault ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]

Rails 应用程序(或 Passenger)似乎正确地选择了 rvm 环境,但随后使用了具有 Ruby 1.8.7 依赖项的不兼容版本的 mysql2。

我已经尝试了很多方法来解决这个问题,

  • 删除并重新安装 mysql2 gem。
  • 使用 sudo apt-get install libmysqlclient-dev 删除并重新安装 mysql 客户端包 libmysql- ruby
  • 尝试相同的更改,但使用 Ruby 1.9.3 而不是 2.0.0。

理想情况下,我希望 Ruby 1.8.7 和 2.0.0 应用程序同时支持 mysql2,但我也愿意让 mysql2 与更高版本的 Ruby 一起工作。

感谢建议。

最佳答案

您应该在应用程序的虚拟主机中设置 PassengerRuby,因为它写在 rvm doc 中。 .

关于mysql - 将 Ruby 版本与 MySql 客户端混合使用时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700254/

相关文章:

mysql - 复杂连接 1 个结果 2 个相同连接

PHP/MySQL 形式 : escaping, sanitizer ,散列......我什至从哪里开始?

ruby-on-rails - Rails check_box_tag 如何在 ajaxily 检查时传递值

ruby-on-rails - 如何在开放式换档 rails 中使用 Assets

javascript - Ruby on Rails 中的通知栏

rubygems - 为什么运行 "Could not find rubygems-bundler"会出现错误 'bundle package'

php - 用于 SELECT 查询的多个 HTML 字段

mysql - 带变量的 SQL 查询,select 语句中的 IF

ruby-on-rails - 使用 Rails 3 邮件

ruby-on-rails - 如何进行只接受小写 'a-z' 和数字 '0-9' 的验证