一般情况下不存在一个rake任务一起执行的情况。
但是有这样几种情况:
1.部署
A在本地部署到外网,同时B也部署。这样就会产生冲突。。弄不好就要再重新部署一次,很麻烦..
2.定时任务
假设一个很频繁的定时任务,放到crontab里五分钟执行一次,但是有可能前一个task在五分钟之内没有结束,这样也会产生冲突。
所以我们要对某些特殊的rake任务进行唯一性检查。如果进程里有该任务就不执行新的任务。
一个简单的例子:
namespace :namespace do
desc "xx"
task :task do
$0 = "_rake_namespace_task"
#要大于1而不是大于0,是因为ruby调用ps时候这个任务已经执行了
raise "This task is running!!" if %x{ps aux|grep #{$0}|awk '{print $11}'}.split("\n").count($0) > 1
puts "Bang!!"
sleep 600
end
end
第一次运行rake namespace:task,一切正常!
第二次:
hooopo@x-hooopo:~/work/trunk$ rake namespace:task
(in /home/hooopo/work/trunk)
rake aborted!
This task is running!!
(See full trace by running task with --trace)
看起来比较傻。。因为每个任务都要自己设置一个$0,然后再去找。。
如果rake提供一个获取当前task的namspace名和task名的方法就很爽了。。不过找遍rake文档也没有。。
-------------分割线-------------------------
感谢antter~~
改了一下:test.rake
def uniq_task(t)
$0 = ["rake", t.name].join(":")
raise "This task is running!!" if %x{ps aux|grep #{$0}|awk '{print $11}'}.split("\n").find_all{|x| x==$0 }.size > 1
end
namespace :namespace do
desc "xx"
task :task do |t|
uniq_task(t)
puts "Bang!!"
sleep 600
end
end
分享到:
相关推荐
limerick_rake, 有用的rake任务集合 Rake有用的rake任务集合。要在 Rails 应用程序中使用,请在你的Gemfile中:gem 'limerick_rake'禁止我们不再使用 limerick_rake,因此不再维护它。 如果你想接管这个
betabuilder, 一组Rake任务,用于管理和分发iOS临时构建 BetaBuilder,用于管理iOS特殊构建的gemBetaBuilder是用于管理和发布iOS应用程序的特殊构建的Rake任务和实用程序的简单集合。如果你正在寻找OSX的BetaBuilder...
使用halcon进行测量,使用的是rake算子;使用halcon进行测量,使用的是rake算子;
rake详解
Traceroute一个Rake任务,帮助你找到Rails 3 应用中堵死的路线和未使用的actions
bower-rails, 在 Rails 上,为 Bower 设置类似 DSL + rake任务 rails Bower 对 Rails 项目的支持。 依赖文件是 Rails root 目录中的bower.json,如果使用 DSL,则为 Bowerfile 。 查看最新变更和发布的变更日志文件...
为了提高工具的通用性,鲁棒性,也是为了提高项目的开发效率,基于halcon已有的算子进一步开发工具是比较不错的选择。 rake工具是用来检测直线的,通过鼠标画一条线,然后工具根据已设定好的参数去附近区域寻找并...
rake接收机仿真程序,包括多个仿真
RAKE接收技术是第三代CDMA移动通信系统中的一项重要技术。在CDMA移动通信系统中,由于信号带宽较宽,存在着复杂的多径无线电信号,通信受到多径衰落的影响。RAKE接收技术实际上是一种多径分集接收技术,可以在时间上...
针对异地通信网络的3G最佳接收机matlab程序。设计的三种RAKE接收机程序。非常实用。
耙子::波浪号当文件更改时运行 rake 任务。 无需对 Rakefile 进行任何更改,只需在任务名称前添加 ~ 如: $ rake ~build安装将此行添加到应用程序的 Gemfile 中: gem 'rake-tilde' 然后执行: $ bundle或者自己安装...
rake for rails rake-0.8.7安装rails必须资源
OpsWorks Rails 命令行手册 本说明书适用于在 Amazon Web Services OpsWorks 堆栈上使用 Ruby on Rails 的... 这既费力又容易出错,因此这些方法通过创建 rake 任务来解决这个问题,这些任务已经嵌入了部署数据中的环
require 'rubygems/tasks'Gem::Tasks.new哲学用于管理Ruby项目的Rake任务不应与用于创建项目的项目生成器耦合。 项目生成器与用于构建,安装和发布Ruby项目的Rake任务无关。 最近,许多Ruby开发人员开始手动创建...
rake-0.8.3.gem redmind安装必需
UniqueValidationInspector Rake任务可帮助您在没有适当数据库索引的模型中找到唯一的验证。 如果启用了唯一性验证,Rails将在执行Model.create , Model.save , Model.update ...操作之前查找现有记录。 如果找到...
rake for rails 安装rails资源
rake-0.8.7 for rails 安装rails必须的资源
rake接收(多径分集技术)+matlab仿真程序
Rake接收机性能仿真(与非Rake接收机对比).pdfRake接收机性能仿真(与非Rake接收机对比).pdf