子域和本地安装的 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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章