首页 分类 关于我
ruby
Nginx 配置示例 工程师的产品观 理理File/Dir/Pathname(一) TracePoint介绍 ruby中的return 如何动态改变某个class的祖先链 ObjectSpace介绍 Rails日志实现探索(3) Rails日志实现探索(2) Rails日志实现探索(1) Rails中的request rescue exception in ruby 设计模式之观察者模式 require 的故事 ruby中的编码 研究ruby的一些小技巧 Rails中间件 ruby对象的序列化 ActiveSupport宝藏之MessageVerifier 如何写rakefile Ruby on Rails 环境及准备 基于Rack的项目初始化
git
如何移除某次提交之前的版本历史 Git 不常用的好用的命令 Git高级技巧之忽略文件
database
Mysql数据库编码 从mongodb向mysql迁移数据
工具
搭建ipsec服务
linux
Linux 常用查看命令

如何写rakefile

rake 是ruby世界里一个非常好用的任务构建工具,其江湖地位极高。

rake是如何工作的

要在项目中运行rake命令,需要首先在项目中包含一个Rakefile文件。不然会报如下错误:

rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

(See full trace by running task with --trace)

我们来看看rake是如何运行的,rake命令的源码中主要是调用了Rake::Application对象的一个run方法:

require 'rake'

Rake.application.run

Rake::Application对象的run方法主要做了以下三件事情:

  • Initialize the command line options (+init+).
  • Define the tasks (+load_rakefile+).
  • Run the top level tasks (+top_level+).

rakefile如何定义rake任务

假设我们写了几个rake任务,目录结构如下:

bootstrap/
├── tasks/
   ├── bootstrap.rake
   └── test.rake

然后在Rakefile里import进来rake文件,代码如下:

#!/usr/bin/env rake

import 'tasks/bootstrap.rake'
import 'tasks/test.rake'

rake的import方法 同 Ruby 的 require 不一样,import 并不是立即进行导入的,而是在整个 Rakefile 执行结束之后才全部导入,因此,可以在任意的地方写 import ,而不用担心依赖关系,需要共享的变量之类的只要在主 Rakefile 中定义了即可。

运行rake --tasks就能看到任务正常加载进来了。

© 2018 www.xinshengyin.com All rights reserved.

版权所有