Тесты производительности Rails "rake test: benchmark" и "rake test: profile" дают мне ошибки - PullRequest
2 голосов
/ 30 марта 2010

Я пытаюсь запустить пустой тест производительности по умолчанию с Ruby 1.9 и Rails 2.3.5, и я просто не могу заставить его работать! Что мне здесь не хватает ???

rails testapp
cd testapp
script/generate scaffold User name:string
rake db:migrate
rake test:benchmark

-

/usr/local/bin/ruby19 -I"lib:test" "/usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/performance/browsing_test.rb" -- --benchmark
Loaded suite /usr/local/lib/ruby19/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
/usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in `rescue in const_missing': uninitialized constant BrowsingTest::STARTED (NameError)
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:94:in `const_missing'
    from /usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/testing/performance.rb:38:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:415:in `block (2 levels) in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:409:in `block in run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `each'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:408:in `run_test_suites'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:388:in `run'
    from /usr/local/lib/ruby19/1.9.1/minitest/unit.rb:329:in `block in autorun'
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby19 -I"lib:test" "/usr/l...]

Ответы [ 3 ]

9 голосов
/ 20 декабря 2011

ОК, проблема в том, что ruby ​​1.8 использовал Test :: Unit в качестве библиотеки тестирования по умолчанию. В ruby ​​1.9 это изменилось на MiniTest.

Версии ActiveSupport до 3.1.0 предполагали Test :: Unit. Похоже, что это было решено в 3.1.0 и позже. Если вы используете rails 3.0.9, он зависит от activesupport 3.0.9, поэтому вы не можете запросить более поздние версии в своем Gemfile.

Найдено это через Google. По-видимому, библиотека Test :: Unit по-прежнему доступна, но в виде гема с именем 'test-unit'.

Итак, в моем Gemfile наверху перед самоцветом рельсов я положил:

gem 'test-unit', '~> 2.3.0'

Затем я запустил тест рейка: бенчмарк, и он заработал!

2 голосов
/ 02 апреля 2010

Я думаю, что это ошибка. Я могу запустить код с ruby ​​1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]. В Ruby 1.9.1 я получаю исключение, подобное описанному вами.

Когда он достигает ActiveSupport :: Testing :: Performance # run (в рельсах), он вызывает исключение в строке yield(self.class::STARTED, name), где он пытается найти константу :: START. В Ruby Prof есть аналогичный метод и в RubyProf :: Test # run.

Я не знаю, кто здесь виноват.

1 голос
/ 02 апреля 2010

См. это .Для патча см. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...