我想安装一个插件,但我担心它会安装很多不必要的东西。我想查看 rake 从中获取安装说明的任何文件,并删除任何不必要的内容。
我相信这是 Rakefile。但是我不确定当 rake 查看 rakefile 时会发生什么 - 它是执行整个 rakefile 还是仅执行指定为与此“安装”过程相关的 rakefile 的一部分?
我想安装一个插件,但我担心它会安装很多不必要的东西。我想查看 rake 从中获取安装说明的任何文件,并删除任何不必要的内容。
我相信这是 Rakefile。但是我不确定当 rake 查看 rakefile 时会发生什么 - 它是执行整个 rakefile 还是仅执行指定为与此“安装”过程相关的 rakefile 的一部分?
rake 文件是任务的集合,当您使用参数(在本例中为 install)调用 rake 时,该参数就是执行的任务。(如果你来自Java,它类似于ant)
所以,不,当您调用“rake + task”时,rake 不会执行整个 rakefile,而只会执行选择的任务。请注意,任务可能有依赖关系(例如,“测试”任务可能依赖于其他先前的任务,例如创建一些文件夹和东西以供测试运行)。
最后,其他用户指出的 rake 用户指南很有用,但我建议在这里阅读更有趣的内容 -> Ruby on Rails Rake 教程。
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.xml
比 更新foo.html
,则 Rake 执行此文件任务。如果foo.html
是较新的,则 Rake 假定它已经构建并跳过它。
更多信息,如果您想了解 Rake 的功能, Rake 用户指南是一个很好的起点。
为什么插件会安装“不必要”的东西?
但是,假设您的担心是有道理的,您是否可以不安装插件,进行调查,然后,如果不满意,使用您的源代码控制系统恢复到预安装的版本?如果您不使用源代码管理,这可能是开始的完美借口......