什么" rake路线"实际上呢?

时间:2014-03-19 01:49:50

标签: ruby-on-rails ruby rake

在一个新的(ish)rails项目中,Rakefile看起来像这样:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)

Blog::Application.load_tasks

然而rake routes产生以下输出:

cpe-74-72-73-47:rails-blog-example djechlin$ rake routes
home_index GET /home/index(.:format) home#index
      root     /                     home#index

我不明白rake如何工作,以便它可以到达路线文件或路线任务。根据{{​​3}}文档,rake被调用为

rake [options ...]  [VAR=VALUE ...]  [targets ...]

但该页面没有解释目标是什么。我假设rake文件直接在routes.rb文件中调用Rakefile与{{1}}无关,但我根本无法确认。

2 个答案:

答案 0 :(得分:6)

Rakefile包含可执行的Ruby代码。在Rakefile中允许任何合法的ruby脚本。

当您触发rake routes you call this piece of Ruby code

答案 1 :(得分:3)

实际上,Rakefile非常相关,rake不会直接在routes.rb上调用。 Rake需要一个rakefile。魔法发生在load_tasks内部,它加载了框架附带的Rails特定的Rake任务。

当你调用Rake时,它会查找一个Rakefile。 Rakefile只是Ruby。在默认的Rakefile中,首先它包含../config/application,其中定义了应用程序类(Blog::Application);然后它调用由load_tasks提供的Rails::Application Blog::Application,{{1}}继承。{/ p>

从那里开始,Rails的每个部分都有一百万种方法可以使Rake任务可用。通常,核心库提供了暴露任务的Rail关系。