2010-05-21 48 views
5

无论在测试版/生产服务器上,您如何在rails中的实时服务器上进行有效调试?在Rails中的生产服务器上进行调试

我试过直接在服务器上修改文件,并重新启动应用程序,但变化似乎并没有生效,或者需要很长的时间(缓存?)

我也试着做“脚本/服务器生产“,但这很慢

另一种选择是编码和部署,但效率非常低。

任何人都有什么见解,他们如何有效地做到这一点?

回答

7

我会回答你的问题,即使我不热修补功能服务器代码:)这种方式同意

首先,你真的确定你已经重新启动服务器?您可以通过拖拽日志文件来检查它。

您更改的代码显示的视图可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除文件,或者您可以将它们全部删除。无论如何,你可以看到你的log/production.log文件(它会告诉你像'渲染缓存...')。

另一点:某些数据也存储在会话中。您也可以尝试删除会话(或者,删除所有会话;如果您将会话保留在数据库中,则可以运行rake db:sessions:clear

+0

伟大的秘诀: 1)尾矿日志文件(我可以尾巴杂种记录以及) 2)耙TMP:缓存:明确(感谢) PS:我用CODA直接编辑登台服务器代码。 =) – 2010-05-21 16:35:04

2

要在生产模式下运行的本地服务器,请尝试:

RAILS_ENV=production script/server 

script/server --environment=production 

的问题是,除非您也使用在WEBrick /杂种服务器在实际生产中,这样做不会正好重复您的实际生产配置(推测使用Apache或乘客?)。此外,在可能导致问题的环境中可能存在细微的差异。

当你改变那里的东西时,你如何重新启动生产环境?这取决于你的部署方式,它可能就像在应用程序的/ tmp中放置restart.txt一样简单,或者像重启Apache或为你的应用程序提供服务的Mongrel流程一样困难(不是真的)。看起来很奇怪,当你这样做时,你的改变需要很长时间才会出现。

当生产模式出现问题时,我只检查一下production.log,它通常指向修复方向。我在开发中实现这一点,然后重新部署。这通常会照顾到事情。使用Capistrano只需要3个命令(一个提交,一个推送和一个部署),除非你的设置比我的复杂得多。

+0

restart.txt是什么意思? 我的设置也很简单,但问题是有时我需要使用生产环境进行DEBUG,这意味着我需要经常进行。 =) – 2010-05-21 16:36:27

+0

在Passenger(用于rails部署的Apache模块)下,通过在应用程序的/ tmp目录中创建restart.txt文件来重新启动应用程序。检查文档: http://www.modrails.com/documentation/Users%20guide。HTML#_redeploying_restarting_the_rack_application – Roadmaster 2010-05-22 22:44:02

相关问题