Консоль 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
Другие вопросы по тегам