一直以来,我在开发rails程序的时候,都是使用rails自带的webrick server,而在部署rails程序的时候使用passenger。
一般来说,passenger是用来做production环境下的rails server,但是railscasts上有一个叫做passenger development的片段,讲的是用passenger(mod_rails)来做开发环境下的rails server。
使用passenger来做开发环境下的server,其好处是可以同时构架多个app的开发环境,免去了对于每个app都得开一个terminal,然后使用webrick的方式。
下面比较一下二者:
- 同时对多个本地app进行开发时,passenger比webrick好。因为不需要对于每个app都开一个webrick server,而且对于每个server还需要指定不同的port。
- 在查看request的信息方面,passenger和webrick差不多。webrick是直接在terminal中显示每个request的信息;而在使用passenger时,则可以通过动态显示development.log的方式进行查看。
- 在debug方面,webrick会比passenger方便些。在使用webrick时,只需要使用u option来启动server,那么app就会在运行时中断在程序中写有debugger语句的地方。可是,在使用passenger时,debug可能会比较麻烦。目前看到的有两种方式,一种是通过使用remote debug的方式,具体可以参考Passenger (mod_rails) for development. Now with debugger! 。另一种是使用rack-debug,它是一个ruby-debug的interface,其使用方式和webrick没有多大区别,但是唯一一点令我难受的时,对于每个rails app,都需要添加一个middleware来实现rack-debug的功能,但是由于可以通过version control在真正的app里过滤掉这些文件,其实并没有多大影响。
所以经过比较,我觉得可以先对rack-debug作一些尝试。
Related posts:
