关于ruby on rails:为什么rake db:migrate:reset没有在rake -T中列出?

Why is rake db:migrate:reset not listed in rake -T?

为什么rake -T未列出某些rake任务? 喜欢db:migrate:reset? 我可以毫无问题地执行它,但为什么不在那里列出? 有没有办法获得一个真正的rake任务完整列表?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
% rake -T
(in /home/zeus/projects/my_project)
rake about              # List versions of all Rails frameworks and the environment
rake db:create          # Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)
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: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:reset to also drop the db first)
rake db:structure:dump  # Dump the database structure to an SQL file
rake db:version         # Retrieves the current schema version number
rake doc:app            # Generate docs for the app -- also availble doc:rails, doc:guides, doc:plugins (options: TEMPLATE=/rdoc-template.rb, TITLE="Custom Title")
rake erd                # Generate an Entity-Relationship Diagram based on your models
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 rails:template     # Applies the template supplied by LOCATION=/path/to/template
rake rails:update       # Update both configs and public/javascripts from Rails (or use just update:javascripts or update:configs)
rake routes             # Print out all defined routes in match order, with names.
rake secret             # Generate a crytographically secure secret key (this is typically used to generate a secret for cookie sessions).
rake spec               # Run all specs in spec directory (excluding plugin specs)
rake spec:acceptance    # Run the code examples in spec/acceptance
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:benchmark, test:profile, test:plugins)
rake test:recent        # Run tests for recenttest:prepare / Test recent changes
rake test:uncommitted   # Run tests for uncommittedtest:prepare / Test changes since last checkin (only Subversion and Git)
rake time:zones:all     # Displays all time zones, also available: time:zones:us, time:zones:local -- filter with OFFSET parameter, e.g., OFFSET=-6
rake tmp:clear          # Clear session, cache, and socket files from tmp/ (narrow w/ tmp:sessions:clear, tmp:cache:clear, tmp:sockets:clear)
rake tmp:create         # Creates tmp directories for sessions, cache, sockets, and pids


没有描述的任务将不会显示。

编辑:看起来像DHH删除了Rails 3中的描述,以完成一些"减少噪音"的任务。 rake db:setup有关于db:reset的注释。

http://github.com/rails/rails/commit/983815632cc1d316c7c803a47be28f1abe6698fb


您还可以使用rake db -T -A显示所有任务,甚至是未注释的任务。 作为参考,这些开关正在执行以下操作:

1
2
3
4
-T, --tasks [PATTERN]    Display the tasks (matching optional PATTERN) with
                         descriptions, then exit.
-A, --all                Show all tasks, even uncommented ones (in combination
                         with -T or -D)


您可以使用rake -P | grep rake显示所有Rake任务的名称。


作为ThomasObermüller的答案的后续,因为-T标志采用位置参数,只需要获得'db'命名空间任务(至少使用rake 10.0.3),你需要这样做:rake -T db -A


对于Windows用户,你执行此rake -P | 找到"耙子"


在这个WIKI - Ruby on Rails / ActiveRecord / Migrations上,您可以找到更多信息。