我正在尝试为我的博客托管多个rails应用程序。有点像www.blog.com/app1会有一个rails应用程序,www.blog.com/app2会有另一个。我该怎么做呢?
发布于 2018-06-09 06:51:27
虽然我同意第一条评论指出的反对意见,但我自己几个月前就遇到了这个问题,实际上我甚至没有尝试解决它,因为我意识到这有多少影响。关于堆栈溢出的现有答案要么略有不同,要么解决了范围更窄的问题,所以他们可能会使用这里提到的一些东西,但没有详细说明含义或替代方案,但有一个interesting overview (以及对该问题的其他答案)。无论如何,我把它当作一种挑战,一头扎进水里。
首先,根据您的场景,有多种方法:
relative_url_root
。它非常脆弱,而且经常有buggy,当你使用它时,许多宝石或引擎都会坏掉,所以要小心。当你做对了,它看起来就像魔术。但是,与子目录相关配置将分散在不同的软件配置和代码中。在探索最后一个选项时,我创建了一个example repository。README应该说出运行代码所需的所有信息。
这个小项目中最重要的观察结果是,当使用相对URL根时,您几乎肯定想要确定所有路由的范围。有可能有不同的设置,但它们甚至更复杂(这并不意味着它们没有意义)。有关示例,请参阅answer with overview mentioned above。
默认情况下(没有限定范围的路由),只有资源路径以相对URL根为前缀,而不是操作路由路径,即使这使得帮助器生成的URL无用,除非由mod_proxy_html
或更自定义的解决方案转换。
另一个重要的观察,与官方指南,代码“在那里”和类似问题的答案在堆栈溢出,是好的,避免在相对URL根的开始的正斜杠。它在测试和其余代码之间的行为不一致。然而,它可以很好地用于您的代码-参见scope definition in routes config或dummy controller test case。
通过创建两个非常简单但几乎完全相同的Rails 5.2应用程序,我得到了上述和其他观察结果。每个都有一个具有路由scoped to relative URL root的操作(dummy#action
)。此操作或its view专门做两件重要的事情来验证一切是否正常:
root_path
帮助器的结果,这表明我们已经正确设置了root_path
/路径帮助器(这要归功于image_path
加载静态资产中的范围路由,这些静态资产不是由Rails应用程序提供服务的,而是由Apache HTTP Server直接提供的,并且由image_path
helper引用
您可以看到,虚拟主机配置有相当多的URL列表,这些URL不应该通过代理传递,而是依赖于别名目录。但是,这是特定于应用程序且非常可配置的,因此使用不同的目录布局进行更简单的设置肯定是可以实现的,但这是完全不同的主题。
如果你喜欢Passenger,并且不想在你的服务器上使用代理,你可以找到more information in their deployment tutorial。
https://stackoverflow.com/questions/50764456
复制相似问题