Rails 关于本地同时运行多个 Rails App 的开发环境的问题

ibachue · 2012年10月16日 · 最后由 iBachue 回复于 2013年09月17日 · 6913 次阅读

大家好, 由于工作原因,经常需要本地同时运行多个 Rails App 开发环境,并且希望这些环境都运行在默认的端口上,能不能在本地开发环境上实现类似于 Apache 或 Nginx 根据 domain name 判断要访问的 Rails App 的功能?谢谢!

本地装 Nginx,添加 hosts

请用 RVM+Pow 支持同时多版本 Rails 使用http://app_name.dev/访问

#2 楼 @southwolf 刚试了下,感觉不错,只是有方便的什么方式看 log 么?

#3 楼 @miclle tail -f log/development.log

#3 楼 @miclle 命令行下:tail -f log/development.log

#6 楼 @miclle http://pow.cx/manual#section_4 这里有介绍了几个好用的第三方插件,你可以试一下。

tail -f log/development.log 这么说会被砍死么- -#

@geekontheway @zzhattzzh 果然大家的答案都一样啊……

哦 谢谢楼上诸位们

#2 楼 @southwolf 能不能不带后缀呢??否则还是有问题的。。

#11 楼 @iBachue 不带后缀是啥意思……http://sample/这样? .dev 不行么?

#12 楼 @southwolf 真的不行啊 我们的项目会判断域名然后产生行为的 不能乱用。。

#13 楼 @iBachue 好诡异 那就还是自己架一个 nginx 吧= =#

#14 楼 @southwolf 这样就不能做 debug 了吧。。

我是用的 railscasts 给的方案:http://railscasts.com/episodes/122-passenger-in-development 用的是 passenger + apache 不过他是在 mac 做开发的,我用 ubuntu,所以过程是这样的 http://happycasts.net/episodes/18

现在发现这个方案很好啊,即使是用 nginx + unicorn + capistrano 的项目,拿到本地开发环境,也可以不改配置直接跑,虽然我本地跑的是 passenger。而当初我试着在开发环境下用服务器上的 nginx + unicorn 反而要改配置的地方很多。

#16 楼 @happypeter 啊 这个不错 我是 Mac 下开发的 谢谢!

#16 楼 @happypeter 不过我有个问题 它使用该防火墙 routes 的办法实现的么?因为我看到它的规则似乎比/etc/hosts 还要优先。

#18 楼 @iBachue 我也不太清楚啊

#19 楼 @happypeter 喝 我刚才成功实现了 直接用 Nginx 做反向代理即可 一点也不麻烦

#21 楼 @happypeter 谢谢 我现在在研究如何让连接尽可能不超时 因为调试有时候可能需要比较久的时间

1 楼 @miclle @iBachue 挖了个坟,不好意思,我使用源码安装了最新的 nginx,只是对如何使用 nginx 让本地运行多个 rails app 感到有点疑惑。我的意思是每次运行 rails s 的时候它默认使用 3000 这个端口,如果我们不改端口号的话(我不知道怎么改 rails 启动的端口号=。=|||),是需要为它们各自创建一个 virtual host 对吗,这个 host 就是配置文件中的 server_name 对么?

我在 Mac 中安装的 nginx,它的配置文件是/usr/local/conf/nginx.conf 还有一个/usr/local/conf/nginx.conf.default,这 2 个文件的内容一样,而且都无法编辑,是 readonly 的,我该怎么去配置 nginx 的多个 host 呢?

看了@iBachue的 blog,地址:http://bachue.is-programmer.com/posts/35984.html 里面谈到的那个/etc/nginx/sites-available 没找到这个目录。我看到他是配置了多个端口,应该是想把不同的端口号绑定到不同的域名上面去,和我这里的需求应该是不一样的。但是你的题目中说的本地同时运行多个 rails app 同时监听某个端口 (80 或 3000) 确实是我想要的,不知道 Blog 中那个部分是解决标题中的问题的。

求教,谢谢!

配置文件如下:

挖了个坟,不好意思,我使用源码安装了最新的 nginx,只是对如何使用 nginx 让本地运行多个 rails app 感到有点疑惑。我的意思是每次运行 rails s 的时候它默认使用 3000 这个端口,如果我们不改端口号的话(我不知道怎么改 rails 启动的端口号=。=|||),是需要为它们各自创建一个 virtual host 对吗,这个 host 就是配置文件中的 server_name 对么?

滴汗。。 rails s -p xxxx 要启动多个 Rails Server,必须启动多个服务器并绑定不同的端口,这点是毫无疑问的,不同应用无法监听同一个端口。

我在 Mac 中安装的 nginx,它的配置文件是/usr/local/conf/nginx.conf 还有一个/usr/local/conf/nginx.conf.default,这 2 个文件的内容一样,而且都无法编辑,是 readonly 的,我该怎么去配置 nginx 的多个 host 呢?

你最好先补习下 Linux 操作,连权限问题都无法解决后面你没法混了。。

里面谈到的那个/etc/nginx/sites-available 没找到这个目录。

这个路径是针对 Ubuntu 的,Mac 下可能有它自己的路径吧,我不知道。

还有,你也要好好学习 Nginx 的使用,否则就算你抄了我配置文件里的内容其实也没什么用。我这个东西之所以后来没用上是因为涉及到的坑太多了,你如果不花点心思去玩的话肯定玩不起来。如果不想花什么多心思的话你还是趁早放弃得了,像我就懒得给自己挖更多的坑了。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号