说“rake install”后会执行哪些步骤?

时间:2009-06-11 21:44:46

标签: ruby-on-rails ruby install rake

我想安装一个插件,但我担心它会安装很多不必要的东西。我想查看rake从中获取安装说明的任何文件,并删除任何不必要的内容。

我相信这是Rakefile。但是我不确定当rake查看rakefile时会发生什么 - 它是执行整个rakefile还是仅指定与此“install”过程相关的部分rakefile?

3 个答案:

答案 0 :(得分:3)

rake文件是一组任务,当你用一个参数调用rake时(在本例中为install),这是执行的任务。 (如果你来自Java,它与ant类似)

所以,不,rake不会在你调用“rake + task”时执行整个rakefile,而只会执行所选的任务。请注意,任务可以具有依赖性(例如,“测试”任务可能取决于其他先前的任务,例如创建一些文件夹和测试运行的东西)。

最后,其他用户指出的rake用户指南很有用,但我建议在这里阅读更愉快 - > Ruby on Rails Rake tutorial

答案 1 :(得分:1)

Rake的设置与Make非常相似,因为Rakefile由目标依赖项组成。这与常规ruby脚本的不同之处在于Rake从您请求的目标开始,并在执行目标之前递归执行其依赖项。

因此,安装可能如下所示:

task :install => :stage do 
    # stuff to do
end

此处,您的目标是install任务,它取决于其他名为stage的任务。

要执行install,Rake必须首先执行stage的依赖项(如果有的话),然后执行stage,最后执行install。所以不,你不执行整个文件,只是足以安全地执行你要求的目标。

Rake还支持文件目标:

file 'foo.html' => 'bar.xml' do |t|
    # Build foo.html from bar.xml, however that is done
end

如果你知道Make,这看起来很熟悉。 Rake首先检查bar.xml是否依赖于任何东西,如果是,则执行该操作。然后,如果bar.xmlfoo.html更新,则Rake执行此文件任务。如果foo.html更新,那么Rake会认为它已经构建并跳过它。

如果您想了解Rake的作用,Rake User Guide是一个很好的起点。

答案 2 :(得分:0)

为什么插件会安装“不必要的”?

假设您的担心是合理的,但是,您是否可以安装插件,进行调查,如果不满意,则使用您的源控制系统恢复到预安装版本?如果你没有使用源代码控制,这可能是开始的完美借口......