【问题标题】:Problems mixing Ruby versions with MySql client将 Ruby 版本与 MySql 客户端混合的问题
【发布时间】:2014-09-02 05:28:23
【问题描述】:

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

我正在将 Rails 应用程序从 Rails 3.0 升级到 Rails 3.2,一切进展顺利(一些代码更改和一些资产重组),除了我需要从 Ruby 1.8.7 升级到更高版本用于邮件宝石。

我想我会跳过 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 应用程序时,我在返回的网页上收到了乘客报告的错误,

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。

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

建议表示赞赏。

【问题讨论】:

  • 你是否在应用程序的虚拟主机中设置PassengerRuby,因为它是用rvm doc写的?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 2016-03-14
    • 2016-06-01
    • 1970-01-01
    • 2020-03-11
    • 2018-12-27
    • 2011-12-29
    • 2010-10-14
    • 2021-09-16
    相关资源
    最近更新 更多