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

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

Usage:
     rails new APP_PATH [options]

Options:
    (...)

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

5 ответов


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

$ rails -v

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

$ rake rails:update:bin

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

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

  • исполняемые файлы вашего приложения теперь живут в bin/ реж. Запустить rake rails:update:bin в get bin/bundle, bin/rails и bin/rake.

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

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

мой конфигурации/развернуть.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

обратите внимание на отсутствие


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

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

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

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


В случае рельсы 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