Ruby on RailsプロジェクトをMacで実行します。私はAndroid電話でテストする必要があります。 Android電話?
「localhost」という名前は、ご使用のコンピューターへの単なるループバックです。 Androidでアクセスするには、コンピューターのIPアドレスを見つける必要があります。
MacとLinuxの両方で動作するこの情報を見つける最も一般的な方法は、ターミナルに移動してifconfig
と入力することです。 「en0」または「en1」を探し、そのエントリの下で「inet」リストを探します。 「192.168.1.100」の行に沿ったものになります。そのアドレスが見つかったら、それをブラウザのアドレスバーに入力します。
(特にMacでは、[システム環境設定]の[共有]ペインに移動すると、そこに表示されます。)
Localhostを他のデバイスでテストできるようにするための簡単な手順を次に示します。
1)Android:接続しているWi-Fi(Macが接続されているWi-Fiと同じ)を選択すると、IPの詳細が表示されます)のIPを識別します。例:Android IP is 192.168.0.10
2)Macでシェルを開き、ホストを編集します。
Sudo nano /etc/hosts
3)次のようにファイルを編集します。
127.0.0.1 192.168.0.10
4)Mac IPを特定します:(@Chuckが完全に説明したように)(シェルで):
ifconfig
5)電話機で使用するお気に入りのWebブラウザを開き、次のような直接接続でMac IP(必要に応じてポートを使用)に接続します。
http://192.168.x.x:8000/
6)テストをお楽しみください:)
Wi-Fiに接続されているすべてのサポートに対してこれを実行できることに注意してください。
モバイルデバイスとコンピューターが同じネットワーク上にあると仮定すると、チャンクの答えは正しいです。ただし、ローカルホストサーバーをより広いインターネットに表示したい場合(3Gでのテスト、webhookの開発、またはリモートの同僚/クライアントとのコラボレーションなど)、ローカルアドレスとしてさらに必要です(10. *または192.168。*で始まる) )は、より広いインターネットからは見えません。
これに対する従来のソリューションはポート転送と動的DNSですが、最近、このプロセスを簡単にすることを目的としたいくつかのサービスが登場しました(免責事項:私はそれらの1つ、PageKiteの著者です)。
これらのサービスは、パブリックDNS名と、「localhost」をクラウド内リレーサーバー(逆プロキシ)に接続するソフトウェアを提供します。たとえば、PageKiteを使用している場合、ターミナルで次のコマンドを実行できます。
$ pagekite.py 80 yourname.pagekite.me
... http://yourname.pagekite.me/
からhttp://localhost:80
で実行されているWebサーバーへのマッピングを作成します。プログラムの実行中、ローカルサイトはインターネットの残りの部分に表示されます。プライベートにするには、pagekite.pyコネクタプログラムをオフにします。
完全を期すために、私が知っているlocalhostトンネリングサービスの一部を以下に示します。
(最後の2つにリンクしていないのでごめんなさい、SOスパム保護は、競合他社に対して公平になることを妨げています。;-)
これは、ローカルネットワーク上のIPを使用してRailsサーバーにアクセスするために働きました:
/ etc/hostsには次のエントリが必要です。
127.0.0.1 192.168.100.12
ここで、192.168.100.12は、ターミナルのifconfigコマンドで見つけることができるIPアドレスです。
Start Rails server with this command:
Rails server -b 0.0.0.0 -p 8080
http://192.168.100.12:8080/ を使用してローカルホストにアクセスできました
今日、この素晴らしい無料のツールを見つけました-本当にセットアップが簡単で、魅力のように動作します! Mac OS、Linux、Windowsのバージョンも利用できます。
(何らかの方法で関連付けられていない)
さらに、Android/iOSデバイスでテストする場合は、PWA AppsAngularで開発し、以下を使用する必要があります。
ng serve --Host 0.0.0.0
サーバーCLIを起動します。
「無効なホストヘッダー」を受け取った場合、以下を使用します。
ng serve --Host 0.0.0.0 --disableHostCheck true
このスレッド(および提案が機能している!)を読んだ後、この問題を解決するための単一のガイドをまとめました。 このガイドへのリンクは、すべてのステップと場所に関するスクリーンショットを持っています 。または、テキストを下に貼り付けます。お手伝いありがとう!
まず、携帯電話とラップトップの両方を同じWiFiネットワークに接続する必要があります。携帯電話のモバイルホットスポットを使用している場合でも機能します。ただし、先に進む前に両方のデバイスを同じネットワークに接続してください。
次に、電話のIPアドレスを収集します。そのためには、Network Info IIアプリを使用します。これを実現するための最も確実な別の方法があります。ただし、ネットワーク情報IIは必要に応じて機能し、このチュートリアルのためのドキュメントです。
コンピューターでターミナルを開き(どのディレクトリにいるかは気にしないでください)、コマンドSudo nano/etc/hosts /を実行します。システムパスワードを入力すると、ターミナルの上部近くに、Word localhostが続く数字の文字列が表示されます。 Localhostは、実際にはコンピューターのサーバーアドレスの単なるエイリアスであるため、ブラウザーでlocalhostにアクセスすると、http要求がローカルマシンにルーティングされるだけです。電話機をこのループに結び付けるには、数字の文字列とLocalhostの間にIPアドレスを入力します。
これを保存するには、保存のプロンプトが表示されたら、Ctrl + Xを押してからYを押します。その後、Enterキーを押すと、標準のコマンドラインに戻ります。
ターミナルで2番目のタブを開き、ローカルサーバーを起動します。シンプルなpythonサーバーを使用してこれをテストしました。これは、ターミナルで実行することで実行できますpython -m SimpleHTTPServer8000。しかし、私は好きなローカルサーバーを起動できると仮定すると、参照する必要があるのはポート番号だけです。単純なpythonサーバーを使用する場合、そのポート番号は8000です。
ターミナルでifconfigを実行します。これにより、大量の情報が表示されるので、そこまでスクロールしてください。探しているのは、en0:またはen1:キー内のinetの後、ネットマスクの前に続く数字の文字列です。
できた! Androidでブラウザーを開き、inet番号にアクセスし、その後にコロン(:)とポート番号を続けます。
1つの答えが受け入れられましたが、これは私にとってはうまくいきました:
ifconfig
と入力し、en0/en1 -> inet
を探します。19*.16*.1.4
のようなものでなければなりません。)モバイル設定を開き、ネットワークに移動します-> Wi-Fiネットワークを長押しします->ネットワークを変更します->高度なオプションまでスクロールします->プロキシマニュアルを選択し、プロキシホスト名にアドレスを入力します。つまり、19*.16*.1.4
内部ポートを入力します。保存します。
google Chromeでwhat is my ip
を検索し、IPを取得して、1**.1**.15*.2**
と言う
1**.1**.15*.2**:port/
にアクセスしてみてください。これと同じくらい簡単です。
他の回答で述べたように、URLはローカルホストではなくコンピューターのIPアドレスで構成する必要があります。それが機能しない場合は、他のことを試す前に、Androidアプリでapi呼び出しを行うときにポートがIPアドレスとともに正しく指定されているかどうかを確認します。つまり、次の形式のURLへのAPI呼び出し:http://192.168.X.X:80/api/..