子域和本地安装的 Rails 应用程序

Posted

技术标签:

【中文标题】子域和本地安装的 Rails 应用程序【英文标题】:Subdomains and locally installed Rails app 【发布时间】:2011-01-11 06:16:54 【问题描述】:

我无法弄清楚我忽略了什么,也许它很明显或缺乏理解。

我正在使用的应用程序使用托管服务器上正常工作的子域。我认为本地安装会引发一些关于路由的问题,所以我阅读了对 /etc/hosts 进行更改并使用 Ghost gem 的内容。两者似乎都可以正常工作,即 localhost:3000/ 变为 myapp.local:3000 但我不明白如何登录子域帐户。这是一个例子......

myapp.local:3000/session/new = 应用的默认登录页面 myapp.local:3000/signup = 默认注册页面 我可以在这里创建一个帐户,例如子1 感谢页面显示了对 sub1.myapp.com 的引用,该引用指向托管应用程序(本地数据库也显示此域) sub1.myapp.local 手动添加到 /etc/hosts 和 dscacheutil -flushcache sub1.myapp.local:3000/session/new 是子域 登录尝试返回这不是一个有效的域。这似乎是有道理的,因为本地数据库在托管服务器上将 url 显示为 sub1.myapp.com。

所以我的问题是我是否可以使用本地解决方法进行开发,还是我在此过程中完全错过了一个基本概念?

【问题讨论】:

如果 sub1.myapp.local 响应,您知道您的主机设置正确。看起来有些东西没有存储所使用的 实际 域,或者根域的配置设置。 【参考方案1】:

您可能只想尝试将实际的 .com 放入您的 /etc/hosts 文件中。

即:

127.0.0.1 sub1.myapp.com 127.0.0.1 myapp.com 127.0.0.1 anyothersubdomains.myapp.com

这通常会诱使您的计算机认为它是所有这些的主机,因此您无法再通过网络浏览器访问真实站点。

如果您确实希望它是 .local,大概是为了在处理本地副本时可以参考真实的在线站点,您可能应该查看 app/controllers/application_controller.rb(有时是 application.rb ) 并在其中查找有助于根据子域确定要做什么的逻辑。也许它的硬编码只是寻找 .com 或其他东西。

【讨论】:

天哪!这就是我一直在寻找的解决方法......我尝试过它并且它有效,例如我可以在本地访问该应用程序,但无法导航到目前可以容忍的公共域。我现在真正需要的是确保我可以在本地运行它。查看 application.rb 似乎确实有一些时髦的重定向逻辑。我想我会把它添加到我的学习清单中。感谢您的帮助...这让我在过去一两天里感到难过。【参考方案2】:

如果您使用 webrick 服务器或类似 Puma 进行开发,您可以使用 lvh.me 访问您的子域。例如

http://sub.lvh.me:3000/

http://lvh.me:3000/ 等于 http://localhost:3000/

【讨论】:

以上是关于子域和本地安装的 Rails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

rails: 如何基于子域覆盖locale?

Rails、Heroku 和子域。我的特殊情况可行吗?

跨子域访问会话(Rails 4)

Rails 4 服务器/VueJS 开发服务器和子域的 Nginx 反向代理

带有子域的 Rails 资产管道不检索图像

在 Rails 3 中跨多个子域删除会话 Cookie