Консоль Rails не работает на сервере
Когда я бегу bundle exec rails console production
или же rails console production
через SSH на сервере в Current
Папка развертывания Capistrano я получаю:
Usage:
rails new APP_PATH [options]
Options:
(...)
с объяснением, чтобы начать новое приложение. Локально это работает. Почему я не могу запустить консоль удаленно?
6 ответов
Я предполагаю, что вы обновили до rails 4
начиная с версии 3, и ваше приложение не может найти исполняемые файлы в bin
каталог. Запустите это, чтобы увидеть вашу версию рельсов:
$ rails -v
Если твой rails
версия 4 или выше, попробуйте запустить это:
$ rake rails:update:bin
Источник: Примечания к выпуску Rails 4
6.1. Значимые изменения
- Исполняемые файлы вашего приложения теперь живут в
bin/
реж. Бежатьrake rails:update:bin
получитьbin/bundle
,bin/rails
, а такжеbin/rake
,
Я использую capistrano для развертывания, включая гем capistrano/bundler. С тех пор./bin
каталог является версионно-контролируемым в Rails 4, нам нужно запретить Capistrano связывать его при развертывании, удалив bin из set :linked_dirs
,
Теперь, чтобы запретить пакетной перезаписи binstub-ов с управлением версиями, мы можем добавить строку 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
линия.
У меня такая же проблема, и получается при развертывании через шапку shared/bin
символическая ссылка на current/bin
,
Вот что работает для меня:
rm current/bin
mkdir current/bin
rake rails:update:bin
Это должно помочь, но это временное решение, я пытаюсь выяснить, как сделать cap не автоматическим символическим током /bin.
В случае с Rails 5.2
Мне пришлось удалить каталог bin, выполнив команду ниже в корневом каталоге проекта.
rm -rf bin
и затем я выполнил другую команду в корневом каталоге проекта:
rake app:update:bin
Он покажет вам вывод, как показано ниже:
create bin
create bin/bundle
create bin/rails
create bin/rake
create bin/setup
create bin/update
create bin/yarn
Вот и все.
Прошло немного времени с тех пор, как на это ответили.
В моем случае мне нужно было запустить:
rake app:update:bin
Примечание - приложение, а не рельсы.
Мне не хватало каталога bin в моем приложении Rails 5.1
Я столкнулся с этой проблемой на своем рабочем сервере, когда обновил свое приложение с Rails 5.2 до 6.0.4. Просто выполните следующие действия:
cd to_your_project_dir
rm -r bin
rake app:update:bin