Ответ 1
Добавление тестовой единицы для работы сработало для меня.
У меня есть существующий проект rails 3, который отлично работает на ruby 1.9.2-p290. Однако обновление до ruby 1.9.3-p0 вызывает rake test
, чтобы выплеснуть следующую ошибку:
/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/unit/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/functional/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
Кажется, это следствие этой проблемы с рейком. Однако, когда я создаю простой проект рельсов на ruby 1.9.3, такая ошибка возникает. Что я могу сделать, чтобы запустить проект rails на ruby 1.9.3?
Добавление тестовой единицы для работы сработало для меня.
Попробуйте следующее (независимо):
test.test_files = FileList['test/unit/**/test*.rb']
shoulda
бета.test/unit
gem.Драгоценность shoulda
вызывает общую проблему при использовании rake
в тестовой среде на ruby 1.9.3, это repported в this issue.
Вы можете использовать эту строку
gem "shoulda", :require => false
в вашем Gemfile, а затем где-нибудь в вашем тестовом коде (например, test/test_helper.rb
, если вы используете тестовый блок), вы можете поместить
require 'shoulda'
Если вы используете rspec, вы не должны использовать камень shoulda
вообще, вы должны использовать shoulda-matchers
, и это не вызовет проблем.
Мы изменили нашу задачу рейка (файл рейка), чтобы выглядеть так:
require 'rake/testtask'
...
desc "Run all tests in folder tests/test*.rb"
Rake::TestTask.new do |t|
t.libs << "test"
t.test_files = FileList['tests/test*.rb']
t.verbose = true
end
на основе: http://rake.rubyforge.org/classes/Rake/TestTask.html