2010-01-25 30 views
1

J'ai récemment installé le bundle gem (stable 2.3.x) avec une version 3.0 intégrée. La documentation pour installer 2.3.x est faible, donc je cherche de l'aide ici.Rails Déchiquetage de Bundler Dépendances

Je l'ai fait tout de cet article sur l'installation et la configuration gem Bundler (Installation Bundler gemme, définir Gemfile, ajoutant preinitializer.rb, nécessitant bundler_gems/environment.rb):

http://litanyagainstfear.com/blog/2009/10/14/gem-bundler-is-the-future/

je peux exécuter le script/serveur avec succès, mais lorsque je tente d'accéder à la page via mon navigateur, je reçois une erreur 500 Internal Server faisant de nombreuses méthodes de ActionView ne sont pas définies:

ActionView::TemplateError (undefined method `debug' ... 

ActionView::TemplateError (undefined method `javascript_tag' ... 

Il doit y avoir un petit bijou dépendent ency échouer quelque part ou quelque chose? Voici mon Gemfile (rails 2.3.5):

clear_sources 
bundle_path "vendor/bundler_gems" 

source "http://gems.github.com" 
source "http://gemcutter.org" 

gem "rails", "2.3.5" 
gem "formtastic" 
gem "authlogic" 
gem "will_paginate" 
gem "cancan" 

Des pointeurs?

+0

La documentation Bundler est horrible. – Jonathan

Répondre

1

Donc, pour la configuration Bundler gemme on Rails 2.3.5:

j'ai changé mon script preinitializer.rb à ceci:

# Load the environment constructed from the Gemfile 
require "#{File.dirname(__FILE__)}/../vendor/bundler_gems/environment" 

module Rails 
    class Boot 
    def run 
     load_initializer 
     extend_environment 
     Rails::Initializer.run(:set_load_path) 
    end 

    def extend_environment 
     Rails::Initializer.class_eval do 
     old_load = instance_method(:load_gems) 
     define_method(:load_gems) do 
      old_load.bind(self).call 
      Bundler.require_env RAILS_ENV 
     end 
     end 
    end 
    end 
end 

et supprimé toutes les définitions Bundler.require_env de config/environment.rb, et tout était bien.

http://gist.github.com/286099

+0

Cela semble fonctionner, mais c'est compliqué. Appeler 'Bundler.require_env' dans une phase ultérieure fonctionnerait aussi, pas besoin de se connecter exactement à l'étape' load_gems'. – mislav

+0

Cela a fonctionné pour moi (je ne sais pas pourquoi, mais ne pas se plaindre). J'ai aussi commencé à obtenir 'config.gem: Unpacked gem environment.rb dans vendor/gems n'a pas de fichier de spécification. Lancez 'rake gems: refresh_specs' pour corriger cela.' erreurs - est-ce que c'est pour les ignorer? – Jonathan

+0

Hmm cela m'est arrivé aussi. Vous pourriez essayer de simplement exécuter la tâche, si cela ne fonctionne pas, quelqu'un d'autre posté un hack: http://stackoverflow.com/questions/2144659/how-to-silence-gem-errors-after-switching- to-bundler Mais je pense qu'il y a une façon plus intelligente de le réparer. Peut-être essayez simplement de supprimer votre Gemfile, puis de le recréer et d'exécuter à nouveau "Gem Bundle". Eh ... – ajhit406

0

La plupart (ou tous) de ces pierres précieuses sont des plugins Rails. Vous devriez les exiger pendant la phase d'initialisation de Rails. Tenez-vous dans votre after_initialize:

config.after_initialize do 
    Bundler.require_env 
end 
+0

Quel est le meilleur fichier pour mettre ce snipit dans? Merci! – Jonathan

1

Pour référence, bundle est maintenant sur 0.9.5. Voici la plus récente 2.3.5 rails config (vous pouvez ignorer tout le reste essentiellement ici):

http://gist.github.com/302406