2010-01-12 3 views
2

J'ai hérité d'un site rails que je dois déployer (rapidement!) Sur notre hébergeur, qui est un serveur partagé standard * nix qui utilise FastCGI pour les applications rails. J'ai travaillé avec des sites de rails à plusieurs reprises dans le passé mais je ne me considère pas comme un expert.De-capistrano a rails application?

Cette application particulière a été développée en utilisant Capistrano, avec lequel je n'ai aucune expérience, et tout ce que j'ai lu me porte à croire que pour déployer l'application "correctement", il faudrait que je crée un compte svn externe, parmi d'autres choses, qui ne sont pas réalisables étant donné notre calendrier et notre situation d'hébergement.

Ma question est la suivante: quelle est la meilleure façon de faire fonctionner rapidement cette application sans utiliser capistrano? J'ai reçu, avec les fichiers du site, un vidage .sql que j'ai déjà importé, et j'ai configuré config/database.yml pour refléter les bons paramètres de production. En ce moment, en cours d'exécution ruby script/console production donne le message d'erreur suivant:

/home/user1/ruby/gems/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:443:in `load_missing_constant':NameError: uninitialized constant ApplicationController 

Merci pour votre attention!

Répondre

1

Comme les autres déjà mentionné, vous utilisez probablement la version incorrecte.

Les rails sont passés de app_controller à application_controller (ou quelque chose comme ça) dans la version 2.1 ou 2.2.

Il y a une tâche de rake que vous devriez être en mesure de fonctionner dans ce cas:

rake rails:update:application_controller 

Il pourrait vous aider.

Comme pour le capistrano. Dans votre deploy.rb vous pouvez ajouter le paramètre: deploy_via:

set :deploy_via, :copy 
set :scm, :none 

Et il devrait utiliser la copie que vous rencontrez dans votre répertoire de travail à déployer avec (pas besoin de subversion ou de tout autre contrôle de version)

La copie récupère généralement le code d'un référentiel localement, puis le télécharge sur le serveur, mais en définissant également: scm sur none, il doit l'ignorer et simplement (espérons-le) utiliser votre copie de travail à la place.

1

Tout Capistrano requiert un fichier deploy.rb et un fichier Capfile, ce n'est pas ce qui cause votre erreur. Du point de vue de cela, il semble que le problème est que vous utilisez une version de gem rails qui est incompatible avec votre application, savez-vous avec quelle version il a été développé? Si c'est le cas, essayez de vendre votre répertoire rails à la bonne version.

Pour le déploiement, si vous utilisez FastCGI, vous pouvez simplement télécharger les fichiers sur l'hôte et définir les autorisations appropriées et vous devriez être prêt à partir. À l'avenir, vous pourriez envisager de passer à une version plus récente des rails, en utilisant Capistrano et en changeant votre environnement pour utiliser le passager apache.

J'espère que cela aide.

+0

jonnii, merci pour la réponse. Que voulez-vous dire par la vente de mon répertoire de rails? Je suis certainement conscient que ce n'est pas l'approche des meilleures pratiques, et à l'avenir, je vais utiliser git, capistrano, et passager dans les rails dev/déploiement, mais je dois obtenir ce site en direct par la fin de la journée. – justinbach

0

Le problème que vous rencontrez semble être une incompatibilité entre la version installée et la version attendue par l'application. Regardez dans config/environment.rb, vers le haut, vous verrez quelque chose qui ressemble à:

RAILS_GEM_VERSION = '2.3.4' 

Vous devez vous assurer que la version des rails installés sur vos matchs de la machine quelle que soit la version est déclarée dans ce fichier. Vous pouvez le faire en exécutant:

sudo gem install -v=X.X.X rails 

où X.X.X correspond à ce qui se trouvait dans votre environnement.rb. Jonnii vous suggère de "geler" vos rails en incluant tout le code des rails dans votre projet directement, (ce qui peut être fait en exécutant des rails de râteau: geler: gemmes APRÈS avoir suivi les étapes ci-dessus et obtenu les bonnes gemmes installées en premier lieu.) Une fois que vous avez gelé les rails, vous n'avez plus besoin d'installer les rails sur votre serveur web.

Bonne chance!

Questions connexes