0

我如何告诉 resque-web 使用 rack、sinatra 和 vegas 的正确 gem 版本?当我访问 resque-web 时,我正在尝试解决未定义的方法 `process_route 错误

如果我运行 bundle 我得到

Using rack (1.4.1) 
Using sinatra (1.3.3) 
Using vegas (0.1.11) 
Using resque (1.23.0) 
Using rufus-scheduler (2.0.17) 
Using resque-scheduler (2.0.0) from https://github.com/bvandenbos/resque-scheduler.git (at master) 

这是 resque-web 应该使用的 gems 的正确版本,但是当我运行时resque-web -v我得到

rack 1.1
sinatra 1.0
vegas 0.1.8

这让我非常头疼(假设这是原因)

undefined method `process_route' for #<Resque::Server:0xbc22f94>

当我尝试在浏览器中访问 resque web 时

如果我跑

bundle exec resque-web -v

我明白了

rack 1.1
sinatra 1.3.3
vegas 0.1.11

这仍然是机架的错误版本。

我正在使用以下路线安装 resque 服务器

mount Resque::Server, :at => "/resque", :constraints => AdminRestriction

我正在使用 ruby​​ 1.9.3 和 rvm 在 rails 3.2.9 应用程序中运行 nginx、unicorn 设置来管理项目特定的 gemset

这是生产服务器唯一的问题,在我的开发 PC 上一切正常

4

1 回答 1

1

看起来您在系统中安装了 resque-web gem,但没有在您的捆绑包中。这会导致它加载不兼容的版本,即使您运行了bundle exec.

您应该能够通过将 resque-web 添加到您的Gemfile

gem "resque-web"

bundle exec命令将首先查看二进制文件/脚本的捆绑包,然后执行捆绑的版本。但是,如果 gem 不在捆绑包中,它将退回到系统上的二进制/捆绑包。

于 2013-01-03T16:05:08.667 回答