ruby - Sinatra、Bundler 和 BUNDLE_PATH 混淆

标签 ruby rubygems sinatra bundle bundler

我在配置 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 中?

最佳答案

在@aaronrussell 首次发帖大约一年后,我在 Passenger、Nginx、Bundler、Sinatra 上遇到了同样的问题。我通过在生产环境中运行它来解决这个问题:

bundle install --deployment

bundle 的 gem 进入./vendor/bundle

以下是关于 bundler deployment mode 的一些详细信息

关于ruby - Sinatra、Bundler 和 BUNDLE_PATH 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435033/

相关文章:

ios - RubyMotion 和指针

ruby-on-rails - rails : How I can get yesterday's date?

ruby-on-rails - 使用 rake 数据库 :migrate with sinatra and activerecord (not rails)

testing - Sinatra Rspec - 测试 View 是否已呈现

ruby - heroku 运行 rake db :migrate: No such file or directory

ruby - 在 Ruby 中模拟构造函数

ruby-on-rails - 在 Ubuntu Server 12.04 上安装 Ruby gem "ffi"时出现问题

Ruby_Installation_Error_Watir

ruby-on-rails - 从随机 :id to :username in rails 更改路由 URL

ruby - Tux 与 Sinatra 无法加载