VagrantがありますVM with Railsサンプルアプリとともにインストールされます。VMはポート3000を転送するように構成されています。 of Rails Webrick server)to Host 3000 port。
config.vm.network "forwarded_port", guest: 3000, Host: 3000
多くの例に見られるように、すべてが構成されています。
しかし、http://localhost:3000
にアクセスしようとしても何も起こりません。また、8081、25600などの他のランダムなポートに転送しようとしましたが、成功しませんでした。また、カールリクエストを実行しても何も取得されず(ピアによる接続のリセットメッセージのみ)、VM内のカールリクエストは正常に動作します)。
私のPCと私のVMはUbuntu 12.04を実行します。私はRuby 2.2.0とRails 4.2.0を使用しています。
重要な点は、Apacheが正常に機能することです。ポート80をポート8080に転送すると、すべてが機能します。他のポート(Rails server -p 4000
など)を使用する場合でも、問題はRailsサーバーのみにあるようです。
Rails 4.2はデフォルトで127.0.0.1
ではなく0.0.0.0
にバインドします。
bin/Rails server -b 0.0.0.0
を使用してサーバーを起動すると、サーバーがソートされます。
特定のポートで実行するには:
Rails server -b 0.0.0.0 -p 8520
使用:
Rails s -b 0.0.0.0
または
追加 to config/boot.rb
:
require 'Rails/commands/server'
module Rails
class Server
new_defaults = Module.new do
def default_options
default_Host = Rails.env == 'development' ? '0.0.0.0' : '127.0.0.1'
super.merge( Host: default_Host )
end
end
# Note: Module#prepend requires Ruby 2.0 or later
prepend new_defaults
end
end
Rails s
ここにある本当に素晴らしい説明: Rails 4.2.0.beta2-LocalHostに接続できませんか?
私のPCがMacマシンであることを除いて、まったく同じ問題がありました。このvagrantfileを使用して動作させました(virtualbox 4.3.36を使用)
# -*- mode: Ruby -*-
# vi: set ft=Ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Use Ubuntu 14.04 Trusty Tahr 64-bit as our operating system
config.vm.box = "ubuntu/trusty64"
# Configurate the virtual machine to use 2GB of RAM
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
config.vm.provision "Shell", inline: <<-Shell
## Install necessary dependencies
Sudo apt-get --assume-yes install libsqlite3-dev libcurl4-openssl-dev git
## Install GPG keys and download rvm, Ruby and Rails
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L https://get.rvm.io | bash -s stable --Ruby
curl -L https://get.rvm.io | bash -s stable --Rails
echo "[[ ls \"$HOME/.rvm/scripts/rvm\" ]] && . \"$HOME/.rvm/scripts/rvm\"" >> ~/.profile
## Adding vagrant user to the group that can access rvm
usermod -G rvm vagrant
Shell
# Forward the Rails server default port to the Host
config.vm.network :forwarded_port, guest: 3000, Host: 3000
end
VMを起動して実行した後、bundle install
私のプロジェクトリポジトリでRails server -b 0.0.0.0
。上記のリンクされた回答で指摘したように:
127.0.0.1:3000はポート3000のそのアドレスからの接続のみを許可しますが、0.0.0.0:3000はポート3000の任意のアドレスからの接続を許可します。
Rails 4.2はデフォルトでローカルホストからの接続のみを受け入れるため、ローカルホスト(VM内など)からのみサーバーにアクセスできます。別のマシン(VMのホストなど)からの接続は機能しません。
エイリアスを使用できます。Ubuntuでは~/.bash_aliases
私が使う:alias rs="Rails server -b 0.0.0.0"
使用する前にターミナルをリロードする必要があります