0

Я пытаюсь реализовать асинхронную обработку электронной почты с помощью API ActiveJob Rails 4.2. До сих пор я пытался использовать два поддерживаемых адаптера: Sucker Punch и Delayed Job, и я получаю одинаковые проблемы с каждым.Rails 4.2 ActiveJob: каждый адаптер приводит к ошибке PhusionPassenger: не удалось найти [gem] в любом из источников (Bundler :: GemNotFound)

Вещи, кажется, работают правильно в разработке. Тем не менее, после развертывания на промежуточном сервер и пытаюсь загрузить веб-сайт в браузере, я получаю экран фиолетовых ошибок PhusionPassenger с этой ошибкой:

Could not find delayed_job-4.0.6 in any of the sources (Bundler::GemNotFound) 

Выше, когда я пытался Отложенные работу. Моя установка камень выглядит следующим образом:

# Gemfile 
gem 'delayed_job_active_record' 

# Gemfile.lock 
    delayed_job (4.0.6) 
     activesupport (>= 3.0, < 5.0) 
    delayed_job_active_record (4.0.3) 
     activerecord (>= 3.0, < 5.0) 
     delayed_job (>= 3.0, < 4.1) 

Когда я попытался Sucker Punch, ошибка PhusionPassenger была такой же, за исключением того, драгоценный камень, который якобы не может быть найден в любых источниках был hitimes, который является зависимость celluloid, которая сам по себе является зависимостью sucker_punch.

Первоначально я думал, что проблема связана с Sucker Punch. После установки gem на игровом сервере и все еще получая ошибку, я решил переключиться на Delayed Job, и теперь у меня почти такая же проблема, поэтому я предполагаю, что есть еще одна проблема с низким уровнем, но я не знаю, что это может быть. Я также пробовал обновлять упаковщик на промежуточном сервере, но не кубик.

Заранее благодарим за любую помощь!

EDIT

Я сделал некоторые более ковыряться на задержанной GitHub работы и нашел эту команду RAILS_ENV=production bin/delayed_job restart. Когда я попытался запустить RAILS_ENV=staging bin/delayed_job restart на моем промежуточном сервере, я был предупрежден об отсутствии binstub delayed_job в моем каталоге bin/. Оглядываясь назад на мою локальную среду разработки, я вижу, что существует bin/delayed_job и может успешно запустить bin/delayed_job restart. Может ли это отсутствие binstub в постановке внести свой вклад в проблему? Если да, почему бы не создать binstub правильно? Я уверен, что мой процесс развертывания capistrano использует bundle exec bundle install --binstubs.

EDIT 2

Через несколько шагов, описанных ниже, я был в состоянии получить delayed_job появляться в моем мусорном ведре/в постановке. Я также попытался добавить камень «демонов» за предложение на Delayed Job GitHub, но все равно получаю ту же ошибку, теперь о «демонах», а не о «delayed_job».

+0

Вы уверены, что пользователь правильного рубина? – rderoldan1

+0

Я не уверен. К сожалению, я также не имею (в настоящее время) знание sysadmin, чтобы проверить, какой рубиновый пассажир использует или меняет его. Тем не менее, я могу сказать, что моя базовая rails4 ветка без активного адаптера адаптера разворачивается и отлично работает на промежуточном сервере. Кроме того, я собираюсь добавить дополнительную информацию, которую я почерпнул в отношении binstubs, которые могут быть полезны или не могут быть полезны. – sixty4bit

+0

Используете ли вы RVM? – rderoldan1

ответ

0

Оказалось, что проблема связана не с адаптерами ActiveJob, а с камнем, который я попытался установить и использовать при создании после обновления Rails 4. Я установил rbenv на промежуточном сервере и добавил 2.2.0 в качестве глобального рубина, но Пассажир все еще искал драгоценные камни, связанные с рубином системы (1.9.3).

0

Это вполне может быть отсутствие вашего binstub, которое может быть исправлено:

Был «вопрос» с Капистрано-Bundler, в том, что он будет пытаться генерировать свои собственные бен окурки, а не принимать их от совершенного git-репо.Это с тех пор было зафиксировано, но можно увидеть в этом выпуске: https://github.com/capistrano/bundler/issues/45

Вы можете заставить допущенный binstub быть использовано путем удаления корзины из ваших связанных директорий так:

set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache' ... 

становится:

set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache' ... 

, а также установка

set :bundle_binstubs, nil 

Или модернизируя драгоценный камень с кепкой.

+0

Я думаю, что я слежу за тобой, но я все еще не совсем там. Я обновляю capistrano-bundler до 1.1.4, перераспределяя, все еще не имею bin/delayed_job. Затем я запустил 'bundler binstubs delayed_job' и получил' 'Нет никаких исполняемых файлов для gem delayed_job." 'Мне все еще нужно делать все, что вы указали выше? – sixty4bit

+0

Кроме того, я нашел ту же проблему здесь: http://stackoverflow.com/questions/22659507/bundler-with-capistrano-doesnt-generate-a-binary-for-delayedjob. Один человек добавил камень «демонов», а другой сделал руду или меньше того, что вы указали выше. Если выше это работает, и было добавлено в PR, вы тоже связались, не уверен, почему у меня все еще есть проблема после обновления. – sixty4bit

+0

Я попробовал добавить демонов, и теперь я просто получаю «Не могу найти демоны-1.1.9 в любом из источников (Bundler :: GemNotFound) "как ошибка моего PhusionPasseneger – sixty4bit