热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么使得Rake在Ruby中如此有用?-WhatmakesRakesousefulinRuby?

Perhapsthisisadumbquestion,andImnotunderestimatingthevalueofRakeherebyanymeans,I

Perhaps this is a dumb question, and I'm not under estimating the value of Rake here by any means, I'm just not getting it. What value does Rake have if all it is, is arbitrarily executed Ruby code? It's apparently good at handling tasks, but what's to stop me from writing a class and embedding it into a shared Ruby directory and executing that code as my task instead? What value does Rake really offer?

也许这是一个愚蠢的问题,我并没有低估Rake的价值,我只是没有理解它。如果Rake是任意执行的Ruby代码,那么它有什么价值呢?它显然擅长处理任务,但有什么能阻止我编写类并将其嵌入到共享的Ruby目录中,并将代码作为任务执行呢?Rake真正提供了什么价值?

3 个解决方案

#1


5  

  • Rake has all the power of a complex built tool such as Make (with the dependency management rules and so on)...
  • Rake具有复杂的构建工具的所有功能,比如Make(使用依赖管理规则等等)……
  • Rake is easily extensible without needing all the complex packaging you'd have otherwise... if you tried to extend ant (jar files and config properties...) and the meta-ness of using a Makefile to build some C code to extend Make...
  • Rake很容易扩展,不需要所有复杂的打包,否则……如果您试图扩展ant (jar文件和配置属性…)以及使用Makefile构建一些C代码来扩展Make的元特性……
  • Rake is extensible just using the language it seeks to manage and without extra packaging... - mostly down to the expressiveness of the ruby language.
  • Rake是可扩展的,仅仅使用它想要管理的语言,而不需要额外的打包……-主要是由于ruby语言的表现力。

#2


3  

I presume it has a topological sort for dependency (in rake terms, prerequisite) tracking...

我认为它对于依赖项(用rake术语,先决条件)跟踪具有拓扑排序……

Dependency tracking logic usually involves something like a topological sort and is a type of inference engine.

依赖跟踪逻辑通常涉及拓扑排序和推理引擎类型。

Combined with the data in the rakefile, the combination of domain data plus the inference engine makes it an expert system.

结合rakefile中的数据,域数据与推理引擎的结合使其成为一个专家系统。

OK, so it's not exactly ("good morning Dave") HAL

好吧,所以不完全是("早上好,戴夫")哈尔

#3


0  

(Caveat: I'm not a Ruby-head, although I've used some Ruby-based projects and so I've used Rake.)

(注意:虽然我用过一些基于ruby的项目,所以用过Rake,但我并不是一个头脑简单的人。)

My immediate response is: Structure, convention, and commonality with other projects (so sharing is easy). Your own tool would be...your own tool, and therefore different, and therefore contrary to convention (and we know how the Ruby community is about convention!). [I expect Rake has at least some pre-baked functionality as well (dependency management), which you wouldn't want to have to recode.]

我的直接反应是:结构、惯例和与其他项目的共性(因此共享很容易)。你自己的工具是……您自己的工具,因此不同,因此与约定相反(我们知道Ruby社区是如何使用约定的!)[我预计Rake至少也有一些预先设计好的功能(依赖管理),您不希望不得不重新编码。]

make wasn't initially all that hefty either; it was just a way to run shell commands with "a bit of" dependency management. But the convention was so powerful that (despite a mind-numbingly awkward structure) makefiles became the norm for C projects for, what, three decades or so, so far?

起初,make也不是那么沉重;它只是一种使用“一点”依赖管理来运行shell命令的方法。但是这个约定是如此强大,以至于(尽管它的结构令人瞠目结舌)makefile成为了C项目的标准,到目前为止,大约30年?


推荐阅读
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • 掌握 esrally 三步骤:高效执行 Elasticsearch 性能测试任务
    自从上次发布 esrally 教程已近两个月,期间不断有用户咨询使用过程中遇到的各种问题,尤其是由于测试数据托管在海外 AWS 上,导致下载速度极慢。为此,本文将详细介绍如何通过三个关键步骤高效执行 Elasticsearch 性能测试任务,帮助用户解决常见问题并提升测试效率。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 在Java中,匿名函数作为一种无名的函数结构,无法独立调用;而在JavaScript中,不仅有类似的匿名函数,还有立即执行函数(IIFE)和闭包等高级特性。立即执行函数同样基于匿名函数实现,但会在定义时立即执行,而闭包则通过嵌套函数来捕获外部变量,实现数据封装和持久化。这些不同的函数形式在实际开发中各有应用场景,理解其特点有助于更好地利用语言特性进行编程。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 题目《UVa 11978 福岛核爆问题》涉及圆与多边形交集面积的计算及二分法的应用。该问题的核心在于通过精确的几何运算与高效的算法实现来解决复杂图形的面积计算。在实现过程中,特别需要注意的是对多边形顶点的平移处理,确保所有顶点包括最后一个顶点 \( p[n] \) 都经过正确的位移,以避免因细节疏忽导致的错误。此外,使用循环次数为50次的二分法能够有效提高算法的精度和稳定性。 ... [详细]
  • 在幼儿园中,有 \( n \) 个小朋友需要通过投票来决定是否午睡。尽管这个问题对每个孩子来说并不是特别重要,但他们仍然希望通过谦让的方式达成一致。每个人都有自己的偏好,但为了集体和谐,他们决定采用一种最小割的方法来解决这一问题。这种方法不仅能够确保每个人的意愿得到尽可能多的尊重,还能找到一个最优的解决方案,使整体满意度最大化。 ... [详细]
  • 在MFC开发过程中,利用Windows内置的文件对话框可以显著提高文件操作的效率。本文总结了使用文件对话框进行文件选择和处理的经验,详细介绍了相关API的调用方法和参数设置,如`CFileDialog`类的使用、结构体`OPENFILENAME`的配置以及如何获取选中的文件路径。通过这些技巧,开发者可以快速实现文件的打开、保存等功能,提升应用程序的用户体验。 ... [详细]
author-avatar
懒训毛毛_770
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有