web-dev-qa-db-fra.com

La console Rails ne fonctionne pas sur le serveur

Lorsque j'exécute bundle exec Rails console production ou Rails console production via SSH sur le serveur situé dans le dossier Current du déploiement de Capistrano, je reçois:

Usage:
     Rails new APP_PATH [options]

Options:
    (...)

avec une explication pour démarrer une nouvelle application. Localement cela fonctionne. Pourquoi ne puis-je pas démarrer une console à distance?

25
Erwin Rooijakkers

Je suppose que vous avez mis à jour Rails 4 à partir de la version 3 et que votre application ne trouve pas les exécutables dans le répertoire bin. Exécutez ceci pour voir votre version de Rails:

$ Rails -v

Si votre version Rails est 4 ou supérieure, essayez de lancer ceci:

$ rake Rails:update:bin

Source: Notes de publication de Rails 4

6.1 Changements notables

  • Les exécutables de votre application résident maintenant dans le répertoire bin/. Exécutez rake Rails:update:bin pour obtenir bin/bundle, bin/Rails et bin/rake.
61
user3453503

J'utilise capistrano pour le déploiement, y compris le joyau capistrano/bundler. Le répertoire ./bin étant contrôlé par la version dans Rails 4, nous devons empêcher Capistrano de le lier lors de déploiements en supprimant le répertoire bin de set :linked_dirs

Maintenant, afin d'empêcher bundler d'écraser les binstubs contrôlés par la version, nous pouvons ajouter la ligne set :bundle_binstubs, nil qui empêchera capistrano-bundler de définir l'option --binstubs lors de l'exécution de l'installation de bundle.

Mon fichier config/deploy.rb a maintenant ces lignes:

# 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

Notez l'absence du répertoire bin dans la ligne :linked_dirs.

20
Troy

J'ai le même problème, et lorsque vous déployez via cap shared/bin, le lien symbolique vers current/bin apparaît. 

Voici ce qui fonctionne pour moi:

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

Cela devrait aider, mais c'est en quelque sorte une solution temporaire, j'essaie de trouver comment faire en sorte que cap ne soit pas automatiquement lié par symlink current/bin.

15
maxhungry

En cas de Rails 5.2

J'ai dû supprimer le répertoire bin en exécutant la commande ci-dessous dans le répertoire racine du projet.

 rm -rf bin

et puis j'ai exécuté une autre commande dans le répertoire racine du projet:

 rake app:update:bin

Il va vous montrer la sortie comme ci-dessous:

  create  bin
  create  bin/bundle
  create  bin/Rails
  create  bin/rake
  create  bin/setup
  create  bin/update
  create  bin/yarn

C'est tout.

4
Manish Shrivastava

Cela fait un petit moment depuis que cela a été répondu.

Dans mon cas j'avais besoin de courir:

rake app:update:bin

Note-app plutôt que Rails.

Il me manquait le répertoire bin dans mon application Rails 5.1

0
Smithy