【问题标题】:What steps are followed after you say "rake install"?在您说“rake install”之后要执行哪些步骤?
【发布时间】:2009-06-11 21:44:46
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby installation rake


    【解决方案1】:

    rake 文件是任务的集合,当您使用参数(在本例中为 install)调用 rake 时,该参数就是执行的任务。 (如果你来自Java,它类似于ant)

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

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

    【讨论】:

    • 此外,如果您执行“rake install --dry-run”,您将看到 rake 将执行哪些任务,而无需实际进行任何处理。
    【解决方案2】:

    Rake 的设置很像 Make,因为 Rakefile 由 targetsdependencies 组成。这与常规 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 是一个很好的起点。

    【讨论】:

    • 我本来打算写相同的任务依赖示例,但后来我想……在 ruby​​ 中“编译”? :D
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-07
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多