Articles of ruby on rails

VMware,2.3 / 3版本的Rails在响应之前等待5秒,2.2是超快的

由于一些只能在* nix上运行的gem,我在Ubuntu上使用VMware 7 vm来运行我的Rails 3应用程序,而在Windows上进行编码。 有一件事我注意到,从主机向客户操作系统发送HTTP请求时,性能是完全糟糕的,在主机操作系统的浏览器上点击F5和在Rails控制台显示的请求之间需要5秒钟的时间。 请注意,我使用干净的Rails应用程序进行testing( rails testproject或rails new testproject ,具体取决于版本),并且在VM中使用Firefox时不会有明显的延迟。 经过一些testing之后,我发现在使用Rails 2.2(.3)的时候,也没有什么不明显的滞后,几乎排除了VMware成为这个问题的原因。 因为我更喜欢使用Rails 3,我尝试了以下; 与Debian / Kubuntu一个干净的虚拟机,同样的结果。 Rails 2.3 / 3与特定的端口/ IP绑定(> 2.2默认为0.0.0.0),结果相同。 不同的VMware连接器设置,没有区别。 不同的Ruby版本(1.8.6,1.9.1,1.9.2头)没有区别。 Google在这里没有提供太多的帮助,希望是serverfault; 我可能试图摆脱这个5秒延迟的每一个请求?

Ruby on Rails新手,在MySQL中遇到套接字问题(在Mac OS X上)

这是我在serverfault上的第一个问题,虽然我以前使用过stackoverflow。 我今年夏天在Ruby on Rails类中,需要尽快让RoR运行。 我用MacPorts来安装Ruby,Rubygems,Rails和mysql(我安装了两个名为“rb-mysql”和“mysql5”的端口)。 我正在学习一个教程,它要求我们使用mysql来修改一个基本的RoR数据库,并得到这个: Icarus:people atg$ mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2) 在指定的位置没有套接字。 我找不到任何地方的sockets。 我从来没有能够启动任何与MySQL,所以我不知道我在做什么错在这里。 由于我是networking开发新手等(但不是编程新手),我不知道我在做什么,所以请在你的帮助中具体。 所有的帮助表示感谢,并提前感谢!

我如何扩展我的RoR应用程序?

我正在开发一个Ruby On Rails应用程序,并希望在生产环境中进行部署。 我有可以使用多个相同configuration的Ubuntu Web服务器,但我不知道如何在多个主机上扩展RoR应用程序和数据库数据。 我想在每个主机上都放置一个Web服务器和一个数据库服务器。 在Web服务器/ ruby​​中间件方面,我希望会话由Web服务器/ ruby​​中间件层进行负载均衡的主Web服务器控制。 它应该交出新的会议释放主机。 我需要在Web服务器/ruby中间件一侧进行负载平衡。 Web /中间件会话应该是primefaces的(我没有兴趣在多个主机上复制它们) 我希望将尚未保存到数据库的事务数据logging到中间重做日志中 – 在失败恢复的情况下重新运行。 在数据库层: 我希望将任何一台主机上的数据库数据复制到另外两台主机上。 (每个DB集有3个DB主机) 我不希望跨所有主机复制数据库数据,因为它需要很长时间 – 延迟。 我想把一个algorithm,将'创build'types的请求引导到正确的数据库。 想到负载平衡。 数据库主控制器应该知道哪个3-DB设置为“更新/读取/删除”请求。 我的testingWeb服务器是webrick,后端数据库是Postgresql(尽pipe这对于RoR来说并不重要)。 我相信我需要将sessionId绑定到每个事务,并且还要保留一个重做日志,以便在发生故障后需要重新加载会话。 还有什么其他devise问题可能会遇到? 另外,我应该使用什么Web服务器和数据库服务器来做烦琐的工作? 主DB和主Web服务器有什么好的select? 我知道这是一个跨越多个知识领域的复杂问题。 我想知道我所问的是否可能。

Apache在本地主机上的行为不同

我已经设法在CentOS 5.5的VPS机器上安装Apache2,Passenger和Ruby on Rails。 检查一切正常,我运行在该机器的links http://localhost ,并显示正确的页面。 该应用程序存储在/var/www/webapp 。 但是,如果我试图从外面访问此页面。 例如: http://212.227.XYZ.ZZ ,我得到位于/var/www/vhosts/default/htdocs/index.html的Apache欢迎页面。 这是我的/etc/httpd/config/httpd.conf一部分: DocumentRoot "/var/www/" LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.2/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.2 PassengerRuby /usr/local/bin/ruby <VirtualHost *:80> ServerName 212.227.XYZ.ZZ DocumentRoot /var/www/webapp/public <Directory /var/www/webapp/public> AllowOverride all Options MultiViews </Directory> </VirtualHost> 我不知道为什么如果我从外面查询服务器,然后我得到不同的网页。 我在/etc/httpd/conf/查找了configuration文件,但是我还没有find任何其他的configuration文件,但httpd.conf 。 我也试过把这个webapp放在/var/www/vhosts/default/htdocs/ ,但是我得到这个错误:“Rails应用程序无法正常启动”。 我怎么解决这个问题? 这让我疯狂。 非常感谢。

无法编译CentOS 5,Ruby 1.9.2和OpenSSL 1.0.0c

我试图在CentOS 5.5上安装Ruby 1.9.2。 我经历了大部分make过程,但是当它试图编译OpenSSL时,我得到一个错误。 下面是输出的错误: compiling openssl make[1]: Entering directory `/sources/ruby-1.9.2-p136/ext/openssl' gcc -I. -I../../.ext/include/x86_64-linux -I../.././include -I../.././ext/openssl -DRUBY_EXTCONF_H=\"extconf.h\" -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -o ossl_x509.o -c ossl_x509.c In file included from ossl.h:201, from ossl_x509.c:11: openssl_missing.h:71: error: conflicting types for 'HMAC_CTX_copy' /usr/include/openssl/hmac.h:102: error: previous declaration of 'HMAC_CTX_copy' was here openssl_missing.h:95: error: conflicting […]

由Apache代理的Rails应用程序不提供CSS,Javascript和图像

我们在后台服务器上部署了一个Rails应用程序,通过Passenger服务。 这个应用程序在端口9000服务,并被configuration为使用sub_uri 。 最初的URL是http://ip.address:9000/ ,现在它在http://ip.address:9000/app1 。 所有的CSS,JavaScript,图像文件都被加载,并且在应用程序中没有错误。 现在我们需要将这个应用程序整合到我们的生产环境中 上面的后端服务器不能直接访问; 所有应用程序都将通过Apache在前端服务器上进行代理。 使用ReverseProxy和Proxy ,可以通过http://domain.name/app1访问这个Rails应用程序。 我们用于PHP应用程序,内部应用程序的当前apacheconfiguration是: ProxyPassReverse /app1 http ://ip.address:9000/app1 ProxyPass /app1 http ://ip.address:9000/app1 retry=5 应用程序有点负载,但有2个问题: 所有静态文件(JavaScript,图像和CSS)都丢失了。 apache在它自己的目录中查找它,而不是在托pipeRails应用程序的服务器上。 一些其他function被打破。 我不知道什么是configuration此设置的最佳方法。 在前端工作还是在后端做更多的configuration? 我应该删除sub_uri并执行前端服务器中的所有configuration吗? 我目前在Rails服务器上使用RailsBaseURI 。 阅读本网站后,还有其他选项,如PassengerEnabled , PassengerAppRoot 。 我该怎么办? 我对Ruby,Rails和Passenger很陌生,任何帮助都非常感谢。

使用乘客时,请保持500内部服务器错误

每次我重新启动我的服务器,这是一个MediaTemple VPS,我们的Redmine安装,由Passenger通过Apache供电,开始发出500内部服务器错误。 当我重新启动Apache时,它通常会重新开始工作,但它变得非常烦人。 我可以得到一些帮助吗? 以下是Apache错误日志必须说的: /usr/local/rubygems/gems/gems/passenger-3.0.4/helper-scripts/passenger-spawnserver:75:in `require': no such file to load — rubygems (LoadError) from /usr/local/rubygems/gems/gems/passenger-3.0.4/helper-scripts/passenger-spawn-server:75 [ pid=6133 thr=3079579408 file=ext/apache2/Hooks.cpp:864 time=2011-03-26 16:43:57.147 ]: Unexpected error in mod_passenger: Cannot spawn application '…/redmine': Could not read from the spawn server: Connection reset by peer (104) Backtrace: in 'virtual Passenger::SessionPtr Passenger::ApplicationPool::Client::get(const Passenger::PoolOptions&)' (Client.h:750) in 'Passenger::SessionPtr Hooks::getSession(const Passenger::PoolOptions&)' […]

在特定的networking路由上间歇性地发送请求失败〜wtf?

这是一个完整的头部划痕。 我有一个在Passenger上运行的Rails应用程序。 我已经testing了来自几个不同的客户端(通过curl)的服务,发现他们完美的performance。 除了一个特定的客户端(它恰好是客户端),我们观察POST请求的间歇性失败(大约60-70%的时间)。 失败的请求在Apache访问日志中显示为500响应,但是应用程序代码甚至没有被调用。 curl报道这样的事情: 答复是: Done waiting for 100-continue < HTTP/1.1 100 Continue * Recv failure: Connection was aborted * Closing connection #0 curl: (56) Recv failure: Connection was aborted 还通过Charles Proxy观察到“网关超时”错误消息。 发送更多数据时,失败率似乎更高。 我真的对这个错误感到困惑,因为它只显示给一个特定的客户端。 我只能猜测networking路由中有什么是造成这个问题的原因,但是没有丝毫的想法来解决这个问题。 有人看过这样的事情吗?

基准Rails应用程序时的奇怪行为

在我的Rails应用程序发布之前,我正在做一些基准testing。 在只有2000个请求和10个并发级别的情况下运行Apache基准testing时,我发现最后的20%的请求很长,从200毫秒到1600毫秒(见附图)。 我相信这是一个configuration问题。 什么可能是错的? 我用Passenger使用Apache。 configuration乘客服务数量最多的最佳做法是什么?

在Mac OS X上更改_www apache2用户的$ PATH

经过几个疯狂的小时,试图让Redmine在Snow Leopard上工作,我终于意识到它试图访问/ System / Library / Frameworks中系统范围的Ruby / Rails安装,而不是通过MacPorts安装的系统。 我知道你可以通过编辑/System/Library/LaunchDaemons/org.apache.httpd.plist来添加到$ PATH中,但是这样做是否会阻止它在框架中查找和/或有没有更好的方法来做到这一点?