ruby-on-rails - references - ruby on rails tutorial




Impossible de démarrer la console 4 rails sur le serveur de production (2)

Ok, j'ai trouvé le problème ... @stoodfarback était assez proche, mais je pensais que la cause du problème devait être mentionnée pour les autres qui pourraient rencontrer la même chose.

Fondamentalement, j'utilise une version plus récente de Capistrano (3.3.5) que celle que j'ai utilisée par le passé et (par défaut) ajoute 'bin' à la liste des répertoires partagés qu'il symbolise à chaque déploiement.

set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp', 'public/system', "public/downloads", "public/assets")

Ainsi, le script de déploiement créait un nouveau répertoire en bin partagé appelé (qui était vide) et les fichiers utilisés pour lancer le serveur rails et la console manquaient. Ils étaient évidemment encore là en développement, donc cela n'a affecté que la production.

Suppression de 'bin' de la liste linked_dirs et tout fonctionne maintenant comme prévu.

ressemble maintenant à:

set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp', 'public/system', "public/downloads","publ ic/assets")

J'ai remarqué que sur les dernières versions de Capistrano que j'ai utilisées, le format et les valeurs par défaut de linked_dirs ne cessent de changer, mais je n'avais jamais vu bin dans cette liste. Pas vraiment sûr pourquoi bin aurait besoin d'être symlinked ... il a seulement les fichiers rails par défaut et je ne peux pas penser à pourquoi ils devraient être retirés du contrôle de la source, mais peut-être l'équipe Capistrano a une raison.

J'espère que cela aide quelqu'un.

Avoir un problème étrange et besoin d'aide.

J'essaie de démarrer une console de rails sur un serveur de production et il agit comme si la commande rails c n'existait pas.

FWIW, je suis développeur de rails depuis 4 ans et je le fais tout le temps sur une pléthore d'autres serveurs sans problème. Sur ce serveur, je peux déposer, créer, migrer, semer la base de données sans problème (en utilisant RAILS_ENV = production), et l'application fonctionne bien sans problèmes.

Installer:

Ubuntu 14.04 (Racksapce 2nd gen performance 1 serveur)
Nginx avec Passenger (j'utilise généralement Unicorn, mais je n'ai jamais eu de problème avec les applications que j'ai déployées avec Passenger)
Ruby 2.1.5 (en utilisant rvm)
Rails 4.1.7
Postgres
Capistrano 3 (en utilisant les extensions rvm, migrations, asset-precompilation, etc.)

Ce que j'ai essayé

cd dans le répertoire de l'application:

cd /home/deployer/app_name/current

Qui charge .rvmrc et montre que je suis dans le bon gemset, a couru le paquet juste pour des coups de pied.

rails c production # (which usually works no problem)

bundle exec rails c production # (sometimes have to do this on older apps that do not have the newer capistrano 3 and rvm setup)

rails c production RAILS_ENV=production # (getting desperate here)

RAILS_ENV=production rails c production # (haha, surely this won't work, but out of options)

RAILS_ENV=production bundle exec rails console

À chaque fois, j'obtiens un avis qui implique que 'rails c' n'est pas une commande valide:

Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]                                      # Path to the Ruby binary     of your choice

..... yada yada, shows the rest of the rails options (oddly enough does not show 'c' or 'console' as options?)

Encore une fois, je me suis connecté à des centaines de consoles de production sur nginx / apache déployé avec des versions anciennes et nouvelles de Unicorn et des versions plus anciennes de Passenger.

C'est la première fois que je reçois ce message, et la console est la seule chose qui semble être cassée - tout le reste fonctionne bien! l'application est en ligne et fonctionne très bien.

Je sais que la première chose à suggérer est que je ne suis pas en cours d'exécution c de la production du répertoire de l'application - j'ai cd'd dans le bon répertoire au moins 10 fois et chargé manuellement le bon gemset, ce n'est pas le problème.

Impossible de comprendre pourquoi cela fonctionne bien dans le développement, mais pas dans la production. Je sais qu'il y a quelque temps, il y avait un répertoire de scripts (peut-être des rails 2?) - Y a-t-il toujours un répertoire qui contient les commandes de script pour les rails qui ont été corrompus?

Est-ce que quelqu'un a déjà vécu cela avant ou avez-vous des suggestions?

J'ai l'impression qu'il me manque quelque chose.


Vérifiez si vous avez l'un de ces fichiers et essayez de les supprimer:

  • script/rails
  • bin/rails




production