2009-08-27 7 views
0

J'essaie de générer des diagrammes de modèle en utilisant la gemme de chemin de fer. J'ai réussi à générer un diagramme pour une application différente, mais j'essaie de comprendre le code «hérité» et de continuer à rencontrer des problèmes.Générateur de diagramme Ruby Railroad échoue avec NoMethodError pour [] dans Enumerable :: Enumerator

Je sais très peu sur rubis ou rails, de sorte que toute aide serait appréciée ...

Fondamentalement, je cours:

$ railroad -v -M 

et obtenez:

Loading application environment 
Loading application classes 
./config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/string/access.rb:43:in `first': undefined method `[]' for #<Enumerable::Enumerator:0xb70a72d0> (NoMethodError) 
from ./config/../vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:70:in `has_attachment' 
from ./app/models/asset.rb:5 
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
from ./config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:495:in `require' 
from ./config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:342:in `new_constants_in' 
from ./config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:495:in `require' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/lib/railroad/models_diagram.rb:40:in `load_classes' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/lib/railroad/models_diagram.rb:40:in `each' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/lib/railroad/models_diagram.rb:40:in `load_classes' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/lib/railroad/app_diagram.rb:21:in `initialize' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/lib/railroad/models_diagram.rb:14:in `initialize' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/bin/railroad:36:in `new' 
from /home/myname/.gem/ruby/1.8/gems/railroad-0.5.0/bin/railroad:36 
from /home/myname/.gem/ruby/1.8/bin/railroad:19:in `load' 
from /home/myname/.gem/ruby/1.8/bin/railroad:19 

Je J'ai essayé de réinstaller attachment_fu (c'était déjà dans le dossier vendor/plugins) mais cela n'a pas semblé aider.

Je ne serais pas surpris s'il y avait un problème avec le schéma - j'ai déjà dû corriger les fautes de frappe dans les noms de colonne, les références manquantes, ce genre de chose. Y at-il de toute façon que je puisse m'arranger là où il pourrait être en train de mourir?

Merci beaucoup!

Répondre

0

Votre version de Ruby, probablement 1.8.7 ou plus récente, est trop moderne pour attachment_fu. Pour résoudre ce problème, vous devez modifier attachment_fu lui-même. Modifier le fournisseur de fichiers/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb et en ligne 66 changement:

options[:path_prefix].first == '/' 

(à la fin) à

options[:path_prefix].starts_with? == '/' 

Alternatives sont à déclasser votre version de Ruby à 1.8.6 (probablement, peut-être même plus bas) ou utiliser un plugin différent. Attachment_fu n'est plus supporté. Paperclip est utilisé ces jours-ci.

Cette erreur est décrite plus en détail here.

Questions connexes