如果任务失败,Capistrano不会回滚

我们使用Capistrano / Webistrano(Lee Hambley的railsless-deploy gem)将我们的PHP应用程序推送到生产服务器。 我有一些自定义任务在部署过程的各个部分中运行。 作为一个例子,我有任务试图停止并重新启动dockersolr实例。 但是,有时在部署过程中会失败,所以Capistrano将回滚整个部署并恢复到之前的版本。 这是一个痛苦。 🙂 我想告诉Capistrano忽略这些任务的返回结果,所以如果他们失败了,Capistrano就会继续下去,完成部署任务。 在事实发生之后,我很容易地向服务器ssh,并正确地终止并重新启动solr实例,而不必再次完成部署。 以下是部署脚本的一些相关部分: before "deploy:symlink", :solr_kill after "deploy:symlink", :solr_start, :solr_index task :solr_kill do run "cd #{current_path}/Base ; #{sudo} phing solr-kill" end task :solr_start do run "cd #{current_path}/Base ; #{sudo} phing solr-start" run "sleep 10" end task :solr_index do run "#{sudo} #{current_path}/Base/Bin/app.php cron run solr_index_cron" end

为什么在Scala的标准库中专门有这么几件事?

我已经在Scala 2.8.1的标准库的源代码中search了@specialized的用法。 它看起来只有less数的特征和类使用这个注释: Function0 , Function1 , Function2 , Tuple1 , Tuple2 , Product1 , Product2 , AbstractFunction0 , AbstractFunction1 , AbstractFunction2 。 没有任何集合类是@specialized 。 为什么不? 这会产生太多类吗? 这意味着使用具有原始types的集合类是非常低效的,因为会有大量不必要的装箱和拆箱操作。 什么是最有效的方法来有一个不变的列表或序列(与IndexedSeq特性)的Int ,避免装箱和拆箱?

在桌子上设置最大高度

我正在devise一个有一些表的页面。 看来,造型表更痛苦,然后应该是。 问题是以下。 表格应该有一个固定的高度,并在底部显示空白 – 当内容太less时 – 或垂直滚动​​条 – 当显示太多时。 添加到这个表有一个不应该滚动的标题。 据我所知, thead不滚动是表的默认行为。 而拉伸tfoot可以很好地填补空白的目的。 可悲的是,似乎每一个我可以放在桌子上的限制都被忽视了。 我努力了 table { height: 600px; overflow: scroll; } 我已经尝试过max-height 。 我试图将表格放在绝对位置,同时给出顶部和底部的坐标。 我曾尝试手动编辑Firebug中的高度,以查看它是否是CSS特性的问题。 我也试图设置tbody的高度。 事实是,无论我的努力如何, 桌子总是保持其内容的高度 。 当然,我可以伪造一个带有div结构的表格,但实际上它是一个表格,我担心使用div可能会遇到某些列可能无法正确alignment的问题。 我该如何给一张桌子一个高度?

单例实例与类方法

在最近使用Objective-C和其中编写的各种库时,我注意到了两个非常stream行的单例模式。 一个版本获取单例实例并调用其实例方法,而其他版本只暴露类方法,从不给你一个实例。 所有这些都具有抽象访问单个资源(StoreKit,CoreData,Parse API等)的目的。 例如,以下是MKStoreKit中使用的前一种方法: // initialize singleton during app boot [MKStoreManager sharedManager] // sometime later in the app [[MKStoreManager sharedManager] buyFeature:kFeatureAId onComplete:^(NSString* purchasedFeature) { NSLog(@"Purchased: %@", purchasedFeature); } onCancelled:^ { NSLog(@"User Cancelled Transaction"); }]; 或者NSUserDefaults,UIApplication等等。另一种方法可以在MagicalRecord或者Parse API中看到: // configure API credentials sometime during app boot [Parse setApplicationId:@"123456" clientKey:@"123456"]; // sometime later PFObject *testObject = [PFObject […]

node:找不到命令

我正在设置node.js以便与Meteor,Derby或者Ember这样的框架一起工作,但是我很早就遇到了一些问题。 按照这些说明(http://www.nodebeginner.org),我安装了node,创build了一个简单的helloworld.js文件,然后在terminal运行这个命令: node path/to/file/helloworld.js 但我得到以下错误: -bash: node: command not found 我试过导航到目录,然后简单地运行: node helloworld.js 但得到相同的错误。 我对node.js是完全陌生的,不知所措。 运行OS X 10.7.5和最新版本的节点。

git用diff创build补丁

我试过了 git diff 13.1_dev sale_edit > patch.diff 然后,我尝试在另一个分支做git apply patch.diff ,但是我得到的补丁不适用。 如何创build补丁文件,我可以使用git应用? 收到的错误: $ git apply –ignore-space-change –ignore-whitespace diff.diff diff.diff:9: trailing whitespace. diff.diff:10: trailing whitespace. function set_change_sale_date() diff.diff:12: space before tab in indent. $this->sale_lib->set_change_sale_date($this->input->post('change_sale_date')); diff.diff:14: trailing whitespace. diff.diff:15: trailing whitespace. function set_change_sale_date_enable() warning: application/controllers/sales.php has type 100755, expected 100644 error: patch failed: application/controllers/sales.php:520 error: application/controllers/sales.php: […]

取消设置单个命令的环境variables

在Bash中,我们可以通过这种方式为单个命令设置一个环境variables: FOO=bar somecommand 如果我们想为单个命令取消一个variables,该怎么办?

Async WebApi Thread.CurrentCulture

我有一个自我托pipe的OWIN托pipe的Web API项目,为我提供了一些基本的REST方法。 我想要多语言的错误消息,所以我使用资源文件和一个BaseController将Thread.CurrentCulture和Thread.CurrentUICulture设置为请求的Accept-Language标头。 public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) { if (controllerContext.Request.Headers.AcceptLanguage != null && controllerContext.Request.Headers.AcceptLanguage.Count > 0) { string language = controllerContext.Request.Headers.AcceptLanguage.First().Value; var culture = CultureInfo.CreateSpecificCulture(language); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } base.ExecuteAsync(controllerContext, cancellationToken); } 这一切都很好,但问题出现,如果我使我的控制器方法asynchronous 。 当我在方法中使用await时,它可能会在另一个线程中继续,所以CurrentCulture和CurrentUICulture将会丢失。 这是我用来find这个问题的一个小例子。 public async Task<HttpResponseMessage> PostData(MyData data) { Thread currentThread = Thread.CurrentThread; await SomeThing(); if […]

高级CSS技巧:如何跨越CSS3网站布局中的多个列的图像?

鉴于 :一个基本的四列布局,一个简单的连续的文本段落 ,以及只有一张照片跨越三列,右上alignment。 现在,我们如何在html / css3 / js的最后三列中优雅地展示我们的图像,以便我们的文本自动在图像周围stream动? 。 。 .quatroColumns{} /* css multi column 4 columns */ .imageSpanning2Columns{} /* align to top-right */ .imageSpanning3Columns{} /* align to top-right */ .imageDescription{} /* description box over image */ http://jsfiddle.net/Vbr9d/205/ ( find图像应该去的地方的一个痛苦:不简单&不优雅的开始! ) http://jsfiddle.net/Vbr9d/206/ ( 看起来丑陋,但HTML开始优雅的图像和文字分离! ) 忘记旧的浏览器版本,除了目前主要的浏览器版本FireFox InternetExplorer Chrome Safari。 任何想法,方向或实验都是受欢迎的。 可选的JavaScript试用版将段落文本自动分成不同的div,但也只有在某种程度上,如果你确信CSS将不会成为这种基本布局,直到2050年。

如果没有JavaScript,当长一个不合适时,我可以显示不同的文字吗?

我正在尝试做什么 我有一个大小有限的框,应该包含一些文本: .box { width: 100px; height: 40px; background-color: yellow; } <div class="box"> Some text goes here. </div> 但是,如果文本太长而无法放入文本框中,我想用我预先准备的另一个更短的文本replace文本。 例如,如果我想用这两个名字填充两个框: Short version Long version ———————————————————— Rudolf E. Raspe Rudolf Erich Raspe Baron Munchausen Hieronymus Karl Friedrich von Munchhausen 那么第一个盒子里面会包含“鲁道夫·埃里克·拉斯佩”(Rudolf Erich Raspe),因为里面的尺寸足够短,而第二个盒子里会包含“男爵男爵”(Baron Munchausen),因为男爵的全名太长了。 我怎样才能build立这样一个盒子,只使用HTML5和CSS3? 浏览器的兼容性很重要,但是我并不需要适应11之前的旧版本或Internet Explorer。 备择scheme 我可以select任何标准选项来处理太长的文本 – 让它溢出,或通过overflow: hidden ,或添加滚动条,或添加省略号,或任何其他标准解决scheme。 但是因为我已经有了每个可能的文本的短版本,所以我想用这些。 例如,我可以通过使用包装器并将其大小与盒子的大小进行比较来在JavaScript中执行此操作。 但是如果可能的话,我想要一个非JavaScript的解决scheme。 我试过了 […]