Консоль 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