2011-12-19 2 views
1

Моя окружающая среда:JRuby-1.6.5: NoMethodError не определен метод '[]' для ноль: NilClass

jRuby-1.6.5 
Rails 2.3.8 

Драгоценные камни:

  • ActionMailer (2.3.8)
  • actionpack (2.3 +0,8)
  • ActiveRecord (2.3.8)
  • ActiveRecord-JDBC-адаптер (1.1.1)
  • ActiveRecord-jdbcpostgresql-адаптер (0.8.2)
  • activeresource (2.3.8)
  • ActiveSupport (2.3.8)
  • Arel (2.2.1)
  • Надувной-замок-Java (1.5.0145.2)
  • строитель (3.0.0)
  • пакетирования (1.0.21)
  • водосвинка (0.4.1.2)
  • Celerity (0.8.9)
  • childprocess (0.1.8)
  • columnize (0.3.2)
  • конфигурации (1.2.0)
  • огурец (0.10.0)
  • огурца рельсы (0.3.2)
  • culerity (0.2.15)
  • database_cleaner (0.6.6)
  • Diff-ЛВП (1.1.2)
  • factory_girl (1.3.3)
  • fastercsv (1.5.4)
  • FFI (1.0.7)
  • gem_plugin (0.2.3)
  • корнишона (2.3.5)
  • -Postgres JDBC (8.4.702)
  • JRuby-банок (1.5.5)
  • JRuby-OpenSSL (0.7.3)
  • JSON (1.4.6)
  • json_pure (1.5.1)
  • Launchy (0.4.0)
  • MIME-типа (1.16)
  • nokogiri (1.4.4.2)
  • стойка (1.1.0)
  • стойки теста (0.5.7)
  • рельсов (2.3.8)
  • реки (0.8.7)
  • rcov (0.9.9)
  • RSpec (1.3.1)
  • RSpec рельсов (1.3.3)
  • рубиновой отладка (0.10.4)
  • рубиновой отладка базы (0.10.4)
  • rubyzip (0.9.4)
  • селен-клиент (1.2.18)
  • селеном WebDriver (0.1.4)
  • источники (0.0.1)
  • Термин-ansicolor (1,0 0,5)
  • слабака (0.0.4)
  • XPath (0.1.3)

Использование JRuby-1.6.5 и метрический камень, получил следующую задачу:

Выполнить метрический из корня приложения

После разбора всех рубинов файлов из приложения и Lib папки, командная строка выводит следующее:

NoMethodError: undefined method `[]' for nil:NilClass 
    initialize at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:232 
    get_elements at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:169 
    initialize at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:130 
    assemble_files at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:111 
    each at org/jruby/RubyArray.java:1612assemble_files at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:109 
    analyze at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:27 
    send at org/jruby/RubyKernel.java:2093 
    generate_report at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/generator.rb:130 
    each at org/jruby/RubyArray.java:1612 
    generate_report at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/generator.rb:128 
    add at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/report.rb:60 
    run_metric_fu at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:51 
    each at org/jruby/RubyArray.java:1612 
    run_metric_fu at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:51 
    run at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:18 
    (root) at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/bin/metrical:4 
    load at org/jruby/RubyKernel.java:1063 
    (root) at c:\jruby-1.6.5\bin\metrical:19 

Если проблема заключается я понятия не имею, просто интересно как обойти его или, может быть, избежать этого, потому что это довольно раздражает, так как моя команда не может видеть показатели для данного кода.

Заранее спасибо.

ответ

1

Давайте рассмотрим трассировку стека. Это говорит вам много.

В верхней части стека вы видите saikuro.rb:232. Именно это:

https://github.com/jscruggs/metric_fu/blob/4c12cfa9cf20e38d4d1e3e01455613ff48563ad8/lib/generators/saikuro.rb#L232

Существует только один способ вызова [], так что можно с уверенностью предположить, что line.match(TYPE_REGEX) является nil. Почему это? Ну, мы не знаем. Но, глядя на стек, мы вполне уверены, что пришли к этой ситуации, читая @file_handle за Saikuro::SFile. Мы не нашли строку, которая соответствует TYPE_REGEX=/Type:(.*) Name/.

Будет очень поучительно знать, какие параметры получает Saikuro::SFile.new. Попробуйте найти это, и просмотрите содержимое файла.

Смежные вопросы