通过本地网络将Ruby / Rails连接到ipad

时间:2015-04-20 15:06:05

标签: ruby-on-rails ruby ipad

主持人ip:192.168.1.2

ipad ip:192.168.1.3

在我的主机上工作时,网址是:localhost.dev:3000/sign_in/ 当我尝试通过192.168.1.2.dev:3000/sign_in连接到我的ipad时连接超时。

克服我的问题的一种方法是将ipad上的wifi设置更改为手动代理:

服务器:192.168.1.2

port:3000

现在192.168.1.2.dev有效!有点...

我现在可以登录我的网站了,但是js似乎被破坏了,ipad将网址更改为:(http://2.dev/page)通常会是(http://localhost.dev:3000/page)我认为是最后一个主机lan ip的数字。我们使用一些外部托管的js文件。这可能是它破裂的原因。启用代理时,我无法浏览互联网(在ipad上)。我错过了什么?

(192.168.1.2:3000不适用于任何设备..)

经过进一步调试后,我认为这是因为通过代理的互联网连接。

我的日志吐出的确切错误是:

 CONNECT configuration.apple.com:443 HTTP/1.1
 Host: configuration.apple.com
 User-Agent: ubd/289.3 CFNetwork/672.1.14 Darwin/14.0.0
 Connection: keep-alive
 Proxy-Connection: keep-alive

 2015-04-20 11:52:54] ERROR TypeError: can't dup NilClass
 /home/pete/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httprequest.rb:279:in `dup'

所以我认为我必须启用linux才能转发我的互联网?

4 个答案:

答案 0 :(得分:11)

无法访问Rails,因为服务器绑定到 localhost

这是我使用zeroconf / Bonjour和Mac OS X的常用工作流程,虽然它基本上可以与其他操作系统和/或固定IP地址一起使用。

  1. 打开系统偏好设置>共享以查找计算机的.local名称:

    System Preferences > Sharing

  2. 使用rails server选项启动-b以提供主机名(这是重要部分):

    $ rails s -b stefans-mac.local
    => Booting Thin
    => Rails 4.2.1 application starting in development on http://stefans-mac.local:3000
    => Run `rails server -h` for more startup options
    => Ctrl-C to shutdown server
    >> Thin web server (v1.5.1 codename Straight Razor)
    >> Maximum connections set to 1024
    >> Listening on stefans-mac.local:3000, CTRL+C to stop
    
  3. 假设您已启用iCloud Tabs,请使用Safari访问Mac上的网址(这样您就不必在iPad上手动输入地址)

  4. 在iPad / iPhone上,打开Safari,点击Tabs图标,向下滚动并选择Rails选项卡:

    iPhone

  5. 完成:

    Safari

答案 1 :(得分:5)

我不确定你所使用的Ruby on Rails版本是什么,但在版本4附近,Rails将默认绑定地址从0.0.0.0更改为仅localhost。默认情况下,您只能通过localhost:3000127.0.0.1:3000访问Rails应用 - 在大多数情况下都可以。

现在,如果您想从本地网络上的iPad(或本地网络上的任何设备)访问该应用程序,则可以在启动服务器时使用-b选项并指定绑定地址{ {1}}

0.0.0.0

这将绑定在所有接口上,包括localhost和网络分配的IP。您现在应该可以通过iPad访问该应用程序。希望这会有所帮助。

答案 2 :(得分:3)

如果我是你,我会尝试Ngrok。这样你就可以暂时安全地将你的开发机器的localhost:3000暴露给ipad。将ngrok下载到您应用程序的文件夹和unzip /path/to/ngrok.zip

对我来说,看起来像: unzip ngrok_2.0.16_darwin_amd64.zip

然后运行rails s

最后./ngrok http 3000

此命令将为您提供从ipad命中的地址。当你完成后,用ctrl+c杀死ngrok。

我得到以下输出:

NAME:
ngrok - tunnel local ports to public URLs and inspect traffic

ngrok by @inconshreveable                                                                                              (Ctrl+C to quit)

Tunnel Status                 online
Version                       2.0.16/2.0.15
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://014da213.ngrok.io -> localhost:3000
Forwarding                    https://014da213.ngrok.io -> localhost:3000

Connnections                  ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

在ipad中输入转发地址。对我来说,http://014da213.ngrok.io

无需配置!

答案 3 :(得分:0)

192.168.1.6是一个IP地址,例如本地网络上的计算机地址。

:3000是一个端口号(好吧,3000是数字,":"只是将它与IP地址分开),在这种情况下是Rails运行的端口。

localhost.dev是在您的计算机上设置的别名,可能是127.0.0.1,这是标准的"此计算机,即本地主机'"" IP地址。

我不希望192.168.1.2.dev完全工作,因为它不是一个有效的IP地址 - 它是一个ip地址,最后一个别名是你的别名

你应该使用" 192.168.1.2:3000"在您的ipad上连接到本地计算机的rails服务器。您不需要更改代理设置(因此请将其设置恢复正​​常)。

如果您特别想在ipad上使用特定的域名(当您访问rails应用程序时),如果您的应用根据通过其访问的域或子域以不同的方式显示网站,这可能很有用,那么您可以使用真棒http://xip.io/。这可能比你需要的更复杂,听起来你只是想看看你的rails应用程序在ipad上的样子。