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

Pet*_*ack 10 ruby ruby-on-rails 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

港口:3000

现在192.168.1.2.dev工作!有点...

我现在可以登录到我的网站,但是js似乎被破坏了,ipad将网址更改为:(http://2.dev/page)通常它会是(http://localhost.dev:3000/page)我认为这是主机局域网的最后一位数.我们使用一些外部托管的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'
Run Code Online (Sandbox Code Playgroud)

所以我想我必须启用linux来转发我的互联网?

Ste*_*fan 11

Rails不可访问,因为服务器绑定到localhost.

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

  1. 打开系统首选项>共享以查找计算机的.local名称:

    系统首选项>共享

  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 假设您已启用iCloud选项卡,请使用Safari访问Mac上的URL(这样您就不必在iPad上手动输入地址)

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

    苹果手机

  5. 完成:

    苹果浏览器


Cha*_*iam 5

如果我是你,我会尝试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.

我得到以下输出:

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
Run Code Online (Sandbox Code Playgroud)

在您的 ipad 中输入转发地址。为了我,http://014da213.ngrok.io

无需配置!


Bar*_*cha 5

我不确定你所使用的Ruby on Rails版本是什么,但在版本4附近,Rails将默认绑定地址从0.0.0.0仅更改为localhost.默认情况下,这允许您仅通过localhost:3000或访问Rails应用程序127.0.0.1:3000- 在大多数情况下这很好.

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

rails s -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

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


Max*_*ams 0

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

:3000是一个端口号(好吧,3000 是这个数字,“:”只是将它与 IP 地址分开),在本例中是 Rails 运行的端口。

localhost.dev是在您的计算机上设置的别名,可能127.0.0.1是标准的“这台计算机,即‘本地主机’”IP 地址。

我根本没想到192.168.1.2.dev会起作用,因为它不是一个有效的 IP 地址 - 它是一个 IP 地址,末尾带有您的别名的最后一位。

您应该在 iPad 上使用“192.168.1.2:3000”连接到本地计算机的 Rails 服务器。您不需要更改代理设置(因此将它们设置回正常状态)。

如果您特别想在 iPad 上使用特定域名(当您访问 Rails 应用程序时),如果您的应用程序根据访问的域或子域以不同方式显示站点,那么您可以使用太棒了http://xip.io/。但这可能比您需要的更复杂,听起来您只是想看看您的 Rails 应用程序在 iPad 上是什么样子。