У меня возникли проблемы с настройкой 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
?
vendor/gems
, а не в мой домашний каталог сbundle install vendor/gems
. Тем не менее, у меня также была дьявольская работа по развертыванию его на моем сервере - Sinatra, похоже, не может загружать некоторые драгоценные камни из системного местоположения, а некоторые изvendor/gems
одновременно - AFAICT, все драгоценные камни должны быть загружены из одного и того же места. . Bundler легко работает с Rails 3, но с Sinatra кажется кошмаром. Я уверен, что делаю что-то не так :( - person aaronrussell   schedule 09.08.2010