【问题标题】:Sinatra, Bundler and BUNDLE_PATH confusionSinatra、Bundler 和 BUNDLE_PATH 混淆
【发布时间】:2011-03-26 23:44:36
【问题描述】:

我在配置 Sinatra 以使用 Bundler 时遇到问题。我对应该在哪里安装 Gems 感到困惑?我读过this question 和这个documentation

我的Gemfile 看起来像:

source "http://rubygems.org"
gem "sinatra"
gem "amazon-ec2"

我的config.ru 看起来像:

require "rubygems"
require "bundler"
Bundler.setup
require "application"
run Sinatra::Application

我的application.rb 看起来像:

require "rubygems"
require "sinatra"
require "AWS"

#... rest of application

现在,当我运行 bundle install 时,一切正常,Gems 被安装到我主目录的 ~/.bundle/ 中。然而,在我的应用程序中,如果我查看 .bundle/config 它会显示:

--- 
BUNDLE_WITHOUT: ""
BUNDLE_PATH: vendor/gems

果然,当我启动应用程序时(顺便说一下,使用Passenger)它说:

Could not find gem 'amazon-ec2 (>= 0, runtime)' in the gems available on this machine. (Bundler::GemNotFound)

显然bundle install 正在将 Gems 安装在与 Sinatra 预期不同的位置。这是否意味着我必须使用 bundle install vendor 或重新配置其他东西,以便应用程序期望 Gems 位于 ~/.bundle 中?

【问题讨论】:

  • 您使用的是什么版本的捆绑软件?
  • 我使用的是 0.9.26。通过始终明确地将 gem 放入 vendor/gems 而不是带有 bundle install vendor/gems 的主目录,我设法使事情在本地工作。然而,我也有一个魔鬼自己的工作将它部署到我的服务器 - Sinatra 似乎无法从系统位置加载一些宝石,而一些来自vendor/gems 同时 - AFAICT,所有宝石都需要从相同的位置。 Bundler 可以毫不费力地与 Rails 3 一起工作,但在 Sinatra 上似乎是一场噩梦。我确定我做错了什么:(

标签: ruby rubygems sinatra bundle bundler


【解决方案1】:

在@aaronrussell 最初发布大约一年后,我在Passenger、Nginx、Bundler、Sinatra 上遇到了同样的问题。我通过在生产中运行它来解决它:

bundle install --deployment

捆绑的 gem 进入 ./vendor/bundle

这里有一些关于bundler deployment mode的详细信息

【讨论】:

    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 2016-07-11
    • 2021-04-10
    • 2021-11-06
    • 2011-12-04
    • 2016-01-12
    • 2013-01-02
    • 2018-06-01
    相关资源
    最近更新 更多