我不知道为什么会突然发生这种情况。如果有其他人以前遇到过这种情况,或者有想法去哪里找,我想知道如何解决。使用bundle exec无法修复,具有相同的行为。
rake版本0.9.2.2rails版本3.2.1rspec 2.8.0版
rake db:test:prepare --trace
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
** Execute db:test:load
** Invoke db:test:load_schema (first_time)
** Invoke db:test:purge
** Execute db:test:load_schema
** Invoke db:schema:load (first_time)
** Invoke environment
** Execute db:schema:load
/Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: db:test:prepare (ArgumentError)
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/ivan/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
这是我的rake-T
→ rake -T
rake about # List versions of all Rails frameworks and the environment
rake assets:clean # Remove compiled assets
rake assets:precompile # Compile all the assets named in config.assets.precompile
rake bourbon:install[sass_path] # Move files to the Rails assets directory.
rake clean # Remove any temporary products.
rake clobber # Remove any generated file.
rake cucumber # Alias for cucumber:ok
rake cucumber:all # Run all features
rake cucumber:ok # Run features that should pass
rake cucumber:rerun # Record failing features and run only them if any exist
rake cucumber:wip # Run features that are being worked on
rake db:create # Create the database from config/database.yml for the current Rails.env (use db:crea...
rake db:database_dump # Dump the current database to a MySQL file
rake db:drop # Drops the database for the current Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load # Load fixtures into the current environment's database.
rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false).
rake db:migrate:projects # Migrates Projects
rake db:migrate:status # Display status of migrations
rake db:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n).
rake db:schema:dump # Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load # Load a schema.rb file into the database
rake db:seed # Load the seed data from db/seeds.rb
rake db:setup # Create the database, load the schema, and initialize with the seed data (use db:res...
rake db:structure:dump # Dump the database structure to db/structure.sql. Specify another file with DB_STRUC...
rake db:version # Retrieves the current schema version number
rake doc:app # Generate docs for the app -- also available doc:rails, doc:guides, doc:plugins (opt...
rake log:clear # Truncates all *.log files in log/ to zero bytes
rake middleware # Prints out your Rack middleware stack
rake notes # Enumerate all annotations (use notes:optimize, :fixme, :todo for focus)
rake notes:custom # Enumerate a custom annotation, specify with ANNOTATION=CUSTOM
rake paperclip:clean # Cleans out invalid attachments.
rake paperclip:refresh # Refreshes both metadata and thumbnails.
rake paperclip:refresh:metadata # Regenerates content_type/size metadata for a given CLASS (and optional ATTACHMENT).
rake paperclip:refresh:missing_styles # Regenerates missing thumbnail styles for all classes using Paperclip.
rake paperclip:refresh:thumbnails # Regenerates thumbnails for a given CLASS (and optional ATTACHMENT and STYLES splitt...
rake rails:template # Applies the template supplied by LOCATION=(/path/to/template) or URL
rake rails:update # Update configs and some other initially generated files (or use just update:configs...
rake routes # Print out all defined routes in match order, with names.
rake secret # Generate a cryptographically secure secret key (this is typically used to generate ...
rake simplecov # Run tests for simplecov
rake spec # Run all specs in spec directory (excluding plugin specs)
rake spec:controllers # Run the code examples in spec/controllers
rake spec:helpers # Run the code examples in spec/helpers
rake spec:lib # Run the code examples in spec/lib
rake spec:mailers # Run the code examples in spec/mailers
rake spec:models # Run the code examples in spec/models
rake spec:rcov # Run all specs with rcov
rake spec:requests # Run the code examples in spec/requests
rake spec:routing # Run the code examples in spec/routing
rake spec:views # Run the code examples in spec/views
rake stats # Report code statistics (KLOCs, etc) from the application
rake test # Runs test:units, test:functionals, test:integration together (also available: test:...
rake test:recent # Run tests for {:recent=>"test:prepare"} / Test recent changes
rake test:single # Run tests for {:single=>"test:prepare"}
rake test:uncommitted # Run tests for {:uncommitted=>"test:prepare"} / Test changes since last checkin (onl...
rake time:zones:all # Displays all time zones, also available: time:zones:us, time:zones:local -- filter ...
rake tmp:clear # Clear session, cache, and socket files from tmp/ (narrow w/ tmp:sessions:clear, tmp...
rake tmp:create # Creates tmp directories for sessions, cache, sockets, and pids
Run options:
# Running tests:
Finished tests in 0.000395s, 0.0000 tests/s, 0.0000 assertions/s.
0 tests, 0 assertions, 0 failures, 0 errors, 0 skips
这是当某个东西(例如宝石)有一行做这样简单的事情时会发生的情况:
require 'test/unit'
该文件有一个at_exit
挂钩,它将自动尝试运行测试,使用命令中的最后一个"短语"作为要运行的测试的名称。这就是它报告找不到db:test:prepare
的原因。
例如,shoulda-context
gem就是这样做的。我们在斯普雷使用它,遇到了和你一样的问题。我打开了一个拉取请求来解决此问题。
这对我有效:
Gemfile:
gem 'shoulda-context', require: false
test_help.rb:
require 'shoulda-context'
也许这是一条无用的路径,但您最近在开发环境中更改了什么吗?喜欢更改XCode吗?在使用osx-gcc安装程序进行重建之前,我一直在处理各种奇怪的事情。
老实说,这似乎不仅仅是一块宝石被打碎了,但我也无法解释我的许多错误。
我可以在不同的情况下(轨道外)重现非常相似的错误:
- MRI 1.9.3-p125
- 耙0.9.2
- Rakefile:
Rake::TestTask.new
- test/test_foo.rb:
require "test/unit"
(抱怨test/test*.rb未找到,相同堆栈)
解决方法:
- 升级至Rake 0.9.2.2
- 降级为MRI 1.9.3-p0
- 升级至测试/第二单元.xhttps://github.com/test-unit/test-unit
考虑到这一点,也许再看看rake。特别是如果使用bundler,请尝试bundler exec rake ...
而不仅仅是rake ...
?
我可以通过在我的Gemfile 中添加一行"gem‘test unit’"来解决这个问题