Консоль Rails не работает на сервере

Когда я запускаю bundle exec rails console production или bundle exec rails console production rails console production через SSH на сервере в Current папке развертывания Capistrano, я получаю:

Usage:
     rails new APP_PATH [options]

Options:
    (...)

с объяснением, чтобы начать новое приложение. Локально это работает. Почему я не могу запустить консоль удаленно?

Ответ 1

Я предполагаю, что вы обновили до rails 4 из версии 3, и ваше приложение не может найти исполняемые файлы в каталоге bin. Запустите это, чтобы увидеть версию вашего рельса:

$ rails -v

Если ваша версия rails равна 4 или выше, попробуйте запустить:

$ rake rails:update:bin

Источник: Rails 4 Примечания к выпуску

6.1 Заметные изменения

  • Теперь исполняемые файлы приложения находятся в bin/ dir. Запустите rake rails:update:bin чтобы получить bin/bundle, bin/rails и bin/rake.

Ответ 2

Я использую capistrano для развертывания, включая драгоценный камень capistrano/bundler. Поскольку каталог. /bin управляется версиями в Rails 4, нам необходимо предотвратить связывание Capistrano в развертываниях, удалив bin из set :linked_dirs.

Теперь, чтобы не допустить перекомпоновку пакета с помощью управляемых версиями binstubs, мы можем добавить set :bundle_binstubs, nil строк set :bundle_binstubs, nil который предотвратит установку capistrano-bundler --binstubs при запуске установки пакета.

Мой файл config/deploy.rb теперь имеет следующие строки:

# Default value for linked_dirs is []
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :bundle_binstubs, nil

Обратите внимание на отсутствие каталога bin в строке :linked_dirs.

Ответ 3

У меня такая же проблема, и получается, когда вы развертываете с помощью cap shared/bin символическая ссылка на current/bin.

Вот что для меня работает:

  • rm current/bin
  • mkdir current/bin
  • rake rails:update:bin

Это должно помочь, но это несколько временное решение, я пытаюсь выяснить, как сделать cap not auto symlink-ing current/bin.

Ответ 4

Прошло немного времени с тех пор, как на это был дан ответ.

В моем случае мне нужно было запустить:

rake app:update:bin

Note-, а не рельсы.

Мне не хватало каталог bin в моем приложении Rails 5.1