Question

Je suis actuellement sur Dreamhost pour essayer de lancer une application Rails 2.3.5.

Voici la situation: Rails 2.2.2 est installé sur les serveurs de Dreamhost. Bien sûr, je ne peux pas mettre à jour la version rails d'un hôte partagé, alors j'ai figé mes Rails dans l'éditeur. Rails 2.3.5 nécessite le rack v1.0.1 gem. Dreamhost utilise le rack v1.0.0 gem. Alors, quand j'essaie de définir:

config.gem "rack", :version => "1.0.1"

je reçois:

can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for []

Donc, ce que j'ai vraiment besoin de faire, c'est de contourner la demande de mon application d'utiliser la version 1.0.1 et d'utiliser la version 1.0.0 de Dreamhost. Est-ce que quelqu'un sait comment configurer cela? Est-ce même possible? Merci pour l'aide.

Était-ce utile?

La solution

Vous voudrez presque toujours décompresser les gemmes dont dépend votre application dans le dossier vendeur . Vous pouvez le faire avec cette commande rake :

rake gems:unpack:dependencies

Ceci créera un dossier vendor / gems dans le dossier racine de votre application et décompactera tous les gems que vous avez déclarés avec la commande config.gem .

Cela résoudra non seulement votre problème d'incohérence dans les versions de rack , mais vous assurera également que vous utilisez les mêmes versions de gems en production que celles utilisées en développement, ce qui peut empêcher de nombreuses applications potentielles. maux de tête à l'avenir.

Autres conseils

Dreamhost a maintenant résolu ce problème sur son wiki de support.

http://wiki.dreamhost.com/ Ruby_on_Rails # Rails_2.3.5 _-_ Rack_1.0_already_activated_.28fix.29

À partir de cette page:

  

Lorsque vous utilisez Rails 2.3.5, vous rencontrerez un problème de Passager indiquant que Rack 1.0.1 ne peut pas être chargé car Rack 1.0 est déjà activé.

     

Une solution à ce problème consiste à geler Rails et à décompresser la gemme du rack dans vendor / gems / rack-1.0.1

     

Une fois que Rails et Rack se trouvent dans le vendeur / rails et le vendeur / gems / rack-1.0.1, vous devez modifier action_controller dans le fichier: vendor / rails / actionpack / lib / action_controller.rb

     

Les lignes 34 et 35 doivent être commentées et ajoutées comme suit pour charger le rack de fournisseur / gems

   load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"
     

Le résultat final devrait ressembler à ceci:

   #gem 'rack', '~> 1.0.1'
   #require 'rack'
   load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"
     

Le vrai problème est que Passenger charge déjà Rack 1.0 et je pense que Passenger doit charger 1.0.1 pour que ce piratage disparaisse.

rake gems: unpack: dependencies ne vous permet pas de décompresser rake dans votre dossier vendor / gems.

Pour le problème Dreamhost, vous devez faire ce que Matt a dit. Geler les rails à 2.3.4.

rake rails:freeze:gems VERSION=2.3.4

Dreamhost utilise une version plus ancienne de Passenger qui précharge le rack 1.0.0. Vous ne pouvez pas charger le rack 1.0.1 une fois que le rack 1.0.0 a été préchargé. Par conséquent, la dernière version des rails possible pour DH est Rails 2.3.4 et Rack 1.0.0.

J'ai rencontré le même problème lorsque j'ai essayé de passer à la version 2.3.5.

Je me demande sur quel serveur vous êtes sur lequel tourne encore Rails 2.2.2? Je pensais que Dreamhost avait déplacé tout le monde à la 2.3.4 maintenant. Je me suis plaint à eux il y a 3 mois et ils ont mis à jour Passenger sur mon serveur le lendemain pour que je puisse installer la version actuelle de Rails. Je vous recommande donc de déposer un ticket de support si Rails 2.3.5 est essentiel pour votre application. Mais il n'y a pas eu beaucoup de changements entre 2.3.4 et 2.3.5, il est donc probable que votre application fonctionnera aussi bien sur 2.3.4. Avez-vous essayé de l'exécuter sur la version 2.3.4 vendored?

Il ne s'agit pas d'un joyau manquant, mais bien d'un bijou requis deux fois avec des versions incompatibles. rake gems: unpack: les dépendances ne résolvent pas ça (j'ai essayé).

Je soupçonne que c'est encore un problème avec la version Passenger de Dreamhost. Mon serveur (buenosaires) a Passenger 2.2.5. La dernière version Passenger est la 2.2.7.

Une simple mise à jour de rack de gem ne fonctionnait pas pour moi car il semble que Rails 2.3.5 souhaite spécifiquement Rack 1.0.1. Ainsi, quand j'ai fait un rack de mise à jour de gemme -v = 1.0.1, Rails 2.3.5 a démarré.

Apparemment, toute cette affaire avec Rails Wanting Rack 1.0.1 est un petit problème de dépendance dans Actionpack qui peut être résolu assez facilement.

Pour moi, il suffisait de modifier vendor / rails / actionpack / lib / action_controller.rb à la ligne 34 de gem 'rack', '~ > 1.0.1 ' à gem' rack ',' ~ > 1.0 ' et le problème a disparu.

Voir: https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3685-actionpack-235-gem-declares-incompatibility-with-rack-110

Dreamhost met à jour Rack and Rails: http: // www .dreamhoststatus.com / 2009/12/21 / ruby-gem-updates /

Je suppose que cela résout le problème.

Je pense qu’à présent, le mieux serait de tout débloquer et d’utiliser ce qui est sur dreamhost. Ils ont actuellement les rails 2.3.4 et si vous pouvez attendre un jour ou deux - dreamhost met à niveau les rails Gem à la version 2.3.5 (il aurait déjà dû être mis à niveau hier, le 21 décembre - mais pour une raison quelconque, ils n’ont pas expliqué en quoi ils étaient. toujours sur 2.3.4).

FWIW, je peux confirmer que geler la gemme ne résout pas le problème; En fait, alors qu'avant l'explosion de mon déploiement (en utilisant DH's Rack 0.3.0!), mon spin-up explose maintenant avec la même erreur que celle vue ci-dessus. Il est peut-être enfin temps de déplacer mon application de jouet / de preuve de concept vers un hébergement «réel» si je souhaite obtenir du travail.

UPDATE: Mon serveur a été mis à niveau vers Rack 1.0.1 le 24 décembre 2009, ce qui a résolu le problème pour moi. Si vous rencontrez toujours des problèmes sur votre compte, je vous recommande de prendre en charge la messagerie. ils étaient assez réactifs dans mon cas (avec des emails, pas d'action, mais pour le prix, vous ne pouvez vraiment pas tout avoir).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top