部署 rails3.1.1 的程序要部署在子目录下该怎么配置

pzgz · 2012年01月03日 · 最后由 pzgz 回复于 2012年02月04日 · 3619 次阅读

比如说我的应用要部署在http://domain/appapp而不是根目录呢?下,该如何才能保证程序中的/是到

试过 relative_url_root 那个好像不能用了

之前也遇过这个问题,我的解决方法是不用“/",全部用 xxx_path,xxx_url

在 config.ru 中修改:

map '/app' do
  run Foo::Application
end

谢谢楼上的,还是有问题,看这里:https://github.com/rails/rails/issues/1394

其实我是要在 routes.rb 中,把 root redirect 到一个指定的页面,比如/dashboard,但是如果我的程序是部署在子目录中的话,他就会把我的程序 redirect 到http://domain/dashboardhttp://domain/app/dashboard中。下,而不是我所要的

还没有时间去多研究,我先部署到一个另外的端口下的根目录中,有空再去折腾了,看了那个 issue,大概是那个 redirect 方法并不管你程序究竟是部署在哪儿,它只是一个直接的转发,这样可以理解,我想有个做法是在 production.rb 中放置一个变量,然后在 routes 中读取就是。

一楼的同学的办法我不太肯定是否可以,因为我是要用在 routes.rb 中,这些 helper 方法估计还没有定义出来。

总之,谢谢各位了

@pzgz 不好意思啊,我以为是 view 里 子目录不知道怎么搞,子域名应该没问题。 楼主试下给 app 绑定个子域名?比如http://app.domain

#3 楼 @pzgz 你是想让登陆用户访问/时,自动跳转到/dashboard 页面?

#5 楼 @daqing

是的,因为用了 simple-navigation,为了让子菜单正确(它是通过 URL 来判断),所以我必须明确用 redirect 让 root redirect 到 dashboard

#4 楼 @richfisher

子域名没有问题的,这个就和 rails app 本身是否部署到子目录无关了

@pzgz 为什么一定要子目录,从没遇到过子目录行子域名不行的情况

#7 楼 @alvin2ye

部署到子目录下还是很正常的,不是所有的程序都需要部署在网站的根目录的,特别是在测试什么的时候,或者说我的程序本身就是含有多个应用的情况

#6 楼 @pzgz 有个妥协的办法,假设处理 root_path 的是 Welcome#index,那么可以在 WelcomeController 中加一个 before_filter:

before_filter :only => :index do |controller|
  redirect_to dashboard_path if user_signed_in?
end

这样的话,用户如果登陆,跳转到/,然后继续跳转到/dashboard,这样虽然跳转两次,至少也能解决问题。

#9 楼 @daqing

嗯,谢了,虽然有所妥协,但是至少暂时是一个解决方法

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