【问题标题】:How can I ensure Ruby is using the Rack gem that's vendored in my Rails app?如何确保 Ruby 使用在我的 Rails 应用程序中提供的 Rack gem?
【发布时间】:2012-02-14 09:59:38
【问题描述】:

我的 Rails 2.3.x 应用程序失败,因为它使用了错误版本的 Rack (one with a bug)。我的系统上有两个版本的 Rack,一个是供应商的版本(正确的版本),一个是通过 apt-get 安装的系统版本。

为什么使用了错误的版本?这让我特别费解,因为在调用堆栈的早期正确使用了供应商版本。以及如何使它使用正确的版本?

这是我在应用程序失败时得到的堆栈跟踪的摘录:

/usr/lib/ruby/vendor_ruby/rack/utils.rb:202:in `set_cookie_header!'
/home/alaveteli/vendor/gems/rack-1.1.0/lib/rack/response.rb:57:in `set_cookie'
/home/alaveteli/vendor/rails/actionpack/lib/action_controller/response.rb:181:in `set_cookie'

请注意,第 2 行使用的是供应商机架,但第 1 行使用的是系统机架。 (response.rb 的第 57 行从 Rack 调用一个模块,因此:Utils.set_cookie_header!(header, key, value)。)

我的$LOAD_PATH 是我认为应该的,供应的宝石先于系统宝石。

是的,我计划尽快迁移到使用 Bundler。

【问题讨论】:

  • 也许尝试卸载您通过 apt-get 安装的那个?
  • 这不是这个系统的一个选项——无论如何,我想了解为什么我的供应商版本不能工作,这样我才能确保我的软件可以在任何地方工作。

标签: ruby-on-rails ruby rack


【解决方案1】:

尝试使用rbenv 和 ruby​​-build。这是一个健全的 ruby​​ 版本管理系统(与疯狂的 rvm 不同)。每个文件夹都有一个 ruby​​ 版本,所有这些都是宝石。当我遇到 alaveteli 问题时,我通常会在开发邮件列表中询问他们。我经营罗马尼亚的alaveteli。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 2015-08-17
    • 2023-04-05
    • 2018-07-21
    • 2012-05-13
    • 1970-01-01
    • 2012-10-13
    • 2020-04-13
    相关资源
    最近更新 更多