1、有个比较简单的解决办法,就是把start_form_tag改成form。这样的确很难再出现这个问题。
2、mongrel以console的方式来运行。
3、重新定向stderr和stdout到某个指定的文件。
下面来说下,为什么会出现这个错误、仔细观察下这些错误发生时的提示,比如有一个函数在里面puts函数。
错误发生的更本原因也是这个函数。
这个函数在调用的时候,要拥到stderr,和stdout,但是这两个对象是pipe、如果是控制台模式下,stderr,和stdout管道是一定存在,并且可以访问到的、但是win32services下面,是没有stderr和stdout的、所以调用puts函数必然出错。
各位可以试下,随便写个页面,里面放上puts函数,放到win32,mongrelservice模式下面去运行,就会出现Errno::EINVAL(Invalidargument)错误。
如果要根本上解决这个问题,最好的办法还是重定向stderr,stdout、可以在environment、rb中加入STDOUT、reopen("c:\log\stdout、log")日志路径随工程环境来修改、stderr的重定向代码也一样、就不多写了。
温馨提示:答案为网友推荐,仅供参考