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?
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écutezrake Rails:update:bin
pour obtenirbin/bundle
,bin/Rails
etbin/rake
.
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
.
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.
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.
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