2012-03-20 4 views
1

У меня здесь очень актуальная проблема. (это происходит буквально все время). Я нашел способ обойти его, но я действительно хотел бы получить решение этой проблемы:Бундлер не «связывает» sqlite3

Вот как это происходит:

На моей машине развития, я имею в мой драгоценный камень файл следующую строку:

gem "sqlite3-ruby", :require => "sqlite3"

, что происходит в том, что, когда я расслоении установить --no-развертывание, он идет хорошо:

Using sqlite3 (1.3.5) 
Using sqlite3-ruby (1.3.3) 
Updating .gem files in vendor/cache 
Your bundle is complete! It was installed into ./vendor/bundle

Но, в развертывании, работающий пакет установки --deployment, я получаю:

Using sqlite3-ruby (1.3.3) 
Updating .gem files in vendor/cache 
Your bundle is complete! It was installed into ./vendor/bundle

... что вызывает ошибку требует, что делает сбой приложения .. Затем, что я делаю, это расслоение установить --no-развертывание на машине развертывания. Затем я снова запускаю пакет install --deployment и затем, магически:

Using sqlite3 (1.3.5) 
Using sqlite3-ruby (1.3.3) 
Updating .gem files in vendor/cache

И тогда приложение работает нормально.

Итак, что я больше всего в основном хочу, что пакетирования признает sqlite3 зависимости от sqlite3 жемчужину

ответ

1

Но затем, в процессе разработки, запуске расслоения установки --deployment, я получаю:

Ладно, это первая подозрительная вещь. Зачем вы запускали --deployment в разработке?

Вы вообще не хотите этого делать. Если вы все время переключаете между «-deployment» и «-no-deployment» на том же компьютере, легко получить что-то путаное, да.

Запуск «bundle install --deployment» сохранит что-то в файле .bundle/config в вашем проекте, который сообщает поставщику «отсюда, только установите эти определенные драгоценные камни». «-no-deployment» удаляет это снова, если вы допустили ошибку или вам нужно взломать. Но в целом вам не нужно и не нужно всегда переключаться туда и обратно. Запустите --deployment на вашей машине для производства/развертывания, не запускайте ее на своей машине разработки. Вы никогда не должны работать --no-deployment, если вы не сделали ошибку, и не имел в виду --deployment

На данный момент, я бы rm -rf .bundle (это нормально, это будет просто удалить все вещи Bundler «помнит» о том, что вы хотите сделать, например --deployment), и начните с bundle install.

Если есть какая-то причина, это не сработает, вот в чем вопрос.

От линии Updating .gem files in vendor/cache, я подозреваю, что в какой-то момент вы бежали bundle package, что еще одна вещь, которая «помнила» в .bundle/config вещи, а также, вероятно, взаимодействующего с другими командами, как ни странно, и делать вещи, которые вы не ожидаете , Удаление вашего .bundle/config также избавится от этой запомненной настройки. (вам также может понадобиться удалить ваш./ vendor/cache directory)

Просто запустите bundle install, если у вас нет причин, по которым вы понимаете, что вам нужно package, и поймите, что он делает. Или это вас смутит.

+0

Я имел в виду развертывание, а не разработку. Тем не менее, ваш ответ прояснил мне кое-что. В ближайшее время я развожу новый веб-сайт, и я дам вам знать результаты. В любом случае, спасибо за ваши объяснения. – pedrozath

Смежные вопросы