我在几个站点上找到了这个漂亮的代码片段,允许我通过Capistrano分析生产日志:
desc "tail production log files"
task :tail_logs, :roles => :app do
run "tail -f #{shared_path}/log/production.log" do |channel, stream, data|
puts # for an extra line break before the host name
puts "#{channel[:host]}: #{data}"
break if stream == :err
end
endRun Code Online (Sandbox Code Playgroud)
它工作得很好,但是,当我读完日志时,我按下Ctrl + C并在我的控制台上产生一个令人讨厌的错误.这不是一个大问题,但我觉得很烦人.我可以做什么,不会产生错误,但任务/尾部/日志查看只是悄然结束?
另外,我对如何分析日志并不熟悉 - 这是否真的是快速查看(远程生产)日志中最新事件的最佳方式,还是有更好的方法?我知道有很多用于日志分析的工具,但我想要一个简单的解决方案来查看最后几个请求,而不是笨重而复杂的东西.我不确定这个Capistrano解决方案是否真的是最佳的.比如,大多数人使用的解决方案是什么?
我一直在Ruby on Rails 3中构建一个应用程序,我开始担心性能优化.现在我希望我的问题对于这个网站来说不是太主观,但我对事实感兴趣,而不是讨论,所以这里是:
虽然我试图让我的观点更快地渲染,但有一件事我根本不知道:我应该瞄准什么?鉴于页面相当复杂,加载时间是否切合实际?我根本没有任何参考.
我通常看到的应用程序是这样的:
在397ms完成200 OK(浏览次数:341.1ms | ActiveRecord:17.7ms)
这是在我的生产服务器上,运行Apache/Passenger.
我是唯一一个(!)在该服务器上发出请求,它是一个根服务器(非虚拟),运行Ubuntu,AMD Athlon 64 X2 5600 +,4 GB RAM
也就是说,对于我的大多数更复杂的动作(不是非常复杂,只是假设它是20个对象的分页列表,每个或每个具有5个计算属性),ActiveRecord时间几乎总是很好(<20-30ms),但是"视图" "数字通常> 200毫秒.
现在,我的问题:当我开始使用RoR时,我的期望(可能是不切实际的)是大多数面向消费者的应用程序具有平均复杂性(让我们说像Facebook,Twitter等等,没有数百万用户)我会得到<20 ms加载时间,只要我是唯一一个发出请求的人,并且如果有很多人同时发出请求,单个服务器加载时间只会接近100毫秒或更长.
我的期望也是数据库请求将是主要的瓶颈,因为所有其余的只是相对简单的计算而没有任何真正的复杂性.我认为从数据库获取所有对象可能需要10ms,然后可能需要另外5ms来运行控制器代码,构建视图等.
由于我从未负责任何制作应用,我不知道这种期望是否真实.所以我希望有经验的人向我指出我的现实期望应该是什么.
同样,我希望这不是太主观,但我对RoR是否快速的意见并不感兴趣,我希望从具有更多经验的人那里得到事实,这些数字是平均值并且可以从生产RoR应用程序中获得预期.否则,我根本不知道我应该停止优化,只是接受我永远不会得到10毫秒的加载时间.
我正在编写一个Ruby脚本,它自动抓取网站进行数据分析,现在我有一个相当复杂的要求:我必须能够模拟来自各个国家的访问,大约20个不同的国家.网站将根据IP位置包含不同的信息,因此完成此任务的唯一方法是从实际位于该国家/地区的服务器请求它.
由于我不想在这20个国家的每个国家购买服务器,我选择试试Tor - 正如许多人所知,通过编辑torrc配置文件,可以指定退出节点,因此可以指定国家/地区.实际请求将来自哪个.
当我手动执行此操作时,例如通过编辑torrc文件以使用阿根廷服务器,然后使用Vidalia断开Tor,重新连接Vidalia,然后重新运行请求,它工作正常.但是,我想完全自动化这个过程,并尽可能高效地完成.Tor是用C语言编写的,我想避免为此分解整个源代码.知道什么是仅使用Ruby自动化整个过程的最简单方法?
此外,如果我遗漏了一些东西,并且有一个更简单的替代方案来解决这个问题,请告诉我.
谢谢!
我一般不喜欢使用Excel和Microsoft产品,但Excel 2007/2010有一些非常好的条件格式化功能,遗憾的是,到目前为止我还没有在其他许多地方看到过.我在商业报告中广泛使用的其中一个是数据栏. http://blogs.msdn.com/b/excel/archive/2009/08/07/data-bar-improvements-in-excel-2010.aspx
在我看来,这些数据栏非常有助于理解数字之外的数据含义.虽然200到2000个用户之间的差异只是人眼难以理解的数字,但是长10倍的条形更加直观.
我的问题:有没有办法在jqGrid中为列的每个值包含单元格条件数据条,镜像Excel功能?这是我看到摆脱Excel工作表并在在线报告系统中实施报告的唯一方法.一旦您习惯了数据栏,它们就是必不可少的,而且它们是我们仍然使用Excel进行报告的唯一原因.
如果我假设在jqGrid中没有这样的内置功能,你认为自定义构建它会有很多工作吗?你有任何想法,最好的办法是什么?
这让我很恼火,而且我已经待了一个多小时了.也许你们其中一个人有个主意.
我在routes.rb中定义了以下路由:
resources :ads do
member do
post :preview_revision
get :revise
end
collection do
get :search
post :preview
end
end
当我运行时rake routes,preview_revision路由正确显示:
preview_revision_ad POST /ads/:id/preview_revision(.:format) {:action=>"preview_revision", :controller=>"ads"}
但是,当我向/ ads/145/preview_revision发出POST请求时,出现以下错误:
Started POST "/ads/145/preview_revision" for 127.0.0.1 at Mon Nov 15 17:45:51 +0100 2010
ActionController::RoutingError (No route matches "/ads/145/preview_revision"):
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms)Run Code Online (Sandbox Code Playgroud)
---更新---
我尝试将方法从POST改为PUT,现在它可以工作了.显然,成员级别的POST路由不起作用,或者不允许.
不过,我想知道原因.我知道POST是用于创建成员的,因此对成员的POST请求没有任何意义,但我没有在Rails指南中的任何地方找到这个,为什么会rake routes显示路由,如果它实际上不起作用?那是一个错误吗?
---更新2 ---
Rails路由指南(Edge版)具体说:
2.9.1添加成员路由
要添加成员路由,只需将成员块添加到资源块中:
Run Code Online (Sandbox Code Playgroud)resources :photos do member do get 'preview' end …
我使用 2 个重叠元素制作了一个 CSS 进度条。元素的 CSS 如下:
#status_progressbar {
height: 22px;
width: 366px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
background: #000;
cursor: pointer;
}
#status_progressbar_progress {
height: 22px;
background: #eee;
float: right;
-moz-border-radius: 0 10px 10px 0;
-webkit-border-radius: 0 10px 10px 0;
border-radius: 0 10px 10px 0;
/* width controlled by Rails backend, using inline style */
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,父级的背景在右边缘部分可见,正如您在这张图片中可以清楚地看到的那样。由于子元素的背景应该与父元素精确重叠,我不知道为什么会出现这种情况。
[图片在Firefox 4中拍摄]

也许有人可以向我解释为什么会发生这种情况以及如何解决?