Синатра, Бандлер и BUNDLE_PATH путаница - PullRequest
2 голосов
/ 08 августа 2010

У меня проблемы с настройкой Sinatra для использования Bundler.Я не понимаю, где должны быть установлены Gems?Я прочитал этот вопрос и эту документацию .

Мой 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 устанавливает драгоценные камни в другом месте, где Синатра ожидает их.Означает ли это, что я должен использовать bundle install vendor или перенастроить что-то еще, чтобы приложение ожидало, что Gems будет в ~/.bundle?

1 Ответ

2 голосов
/ 28 мая 2011

Примерно через год после первоначальной публикации @aaronrussell я столкнулся с той же проблемой с Passenger, Nginx, Bundler, Sinatra.Я справился с этим, выполнив это на производстве:

bundle install --deployment

В комплекте идут гемы*

...