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

时间:2010-01-30 19:10:37

标签: ruby-on-rails subdomain localhost

我无法弄清楚我在忽视什么,也许是明显的或缺乏理解。

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

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

所以我的问题是,我是否可以使用本地解决方案进行开发,或者我是否完全错过了一个基本概念?

2 个答案:

答案 0 :(得分:11)

您可能只想尝试将实际的dot 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或其他东西。

答案 1 :(得分:1)

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

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

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