首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tomcat7上子目录中的JRuby Rails 3.1.6部署WAR (重定向和链接不使用子目录)

Tomcat7上子目录中的JRuby Rails 3.1.6部署WAR (重定向和链接不使用子目录)
EN

Stack Overflow用户
提问于 2012-07-18 21:16:23
回答 1查看 480关注 0票数 2

我有一个JRuby on Rails 3.1.6应用程序,我想把它作为WAR文件部署在Tomcat7上。为了生成war,我使用了warbler。

我可以将应用程序部署到服务器上,一切都在运行。但生成的链接或设计到/users/sign_in的重定向表单不起作用,因为上下文路径被忽略了。

我尝试使用以下命令设置相对url根:

代码语言:javascript
运行
复制
config.action_controller.relative_url_root = '/foo'

但是没有找到方法。(我也尝试了ENV变量,但什么也没有发生)

我试图在我的routes.rb中使用scope '/foo',但这也不起作用。

我还尝试在我的config.ru中添加以下内容

代码语言:javascript
运行
复制
map '/foo' do
  run Foo::Application
end 

但是config.ru文件看起来不会包含在WAR文件中,也不会以任何方式使用。

我不能在tomcat中生成VirtualHost或任何东西,我只有权将应用程序部署为WAR文件。有没有办法告诉rails应用程序它在给定子目录(上下文路径)下运行,以便将其添加到在Rails 3.1.6中工作的所有生成的链接、重定向等中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 19:03:36

听起来像是Devise的事情,你检查过它是如何发出重定向的吗?假设您在一个操作中执行了类似以下操作,那么它应该是有效的:

代码语言:javascript
运行
复制
def index
  redirect_to :action => "hello"
end

当应用程序运行在与/不同的servlet上下文路径中时,jruby-rack (包含在warble中)可以正确地处理这种情况。我建议逆转你试图让事情正常工作的“黑客”,并检查重定向你的代码……例如,像redirect_to "/home/goodbye"这样的代码不会“工作”(在上下文路径上加上前缀),因为它假设是一个完整的URL路径。

至于Rails应用程序的config.ru,Warbler不会复制它--因此它可以将Rails与普通的Rack应用程序区分开来(就像jruby-rack在Rails中做了更多的钩子,以提供与servlet容器,如Tomcat的无缝体验一样)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11542314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档