Путаница с Синатрой, Бандлером и BUNDLE_PATH

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


person aaronrussell    schedule 08.08.2010    source источник
comment
Какую версию бандлера вы используете?   -  person Yehuda Katz    schedule 08.08.2010
comment
Я использую 0.9.26. Мне удалось заставить все работать локально, всегда явно помещая драгоценные камни в vendor/gems, а не в мой домашний каталог с bundle install vendor/gems. Тем не менее, у меня также была дьявольская работа по развертыванию его на моем сервере - Sinatra, похоже, не может загружать некоторые драгоценные камни из системного местоположения, а некоторые из vendor/gems одновременно - AFAICT, все драгоценные камни должны быть загружены из одного и того же места. . Bundler легко работает с Rails 3, но с Sinatra кажется кошмаром. Я уверен, что делаю что-то не так :(   -  person aaronrussell    schedule 09.08.2010


Ответы (1)


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

bundle install --deployment

Связанные драгоценные камни идут в ./vendor/bundle

Вот некоторые подробности о режиме развертывания бандлера.

person Noah Thorp    schedule 28.05.2011