2015-01-21 4 views
1

OpenBSD 5.7을 실행하는 VirtualBox에서 Ruby 2.2.0과 Rails 4.2를 설정했지만 rails s을 수행 할 때 http://10.0.0.4:3000/에 연결할 수없는 이유는 무엇입니까?`rails s`이 더 이상 10.0.0.4:3000에 바인딩하지 않습니다.

% rails s -p 3000 -b 10.0.0.4 
=> Booting Puma 
=> Rails 4.2.0 application starting in development on http://10.0.0.4:3000 
=> Run `rails server -h` for more startup options 
=> Ctrl-C to shutdown server 
Puma 2.11.0 starting... 
* Min threads: 0, max threads: 16 
* Environment: development 
* Listening on tcp://10.0.0.4:3000 

하지만 난 정말 모든 것을해야한다 : 나는 명시 적으로 IP와 포트를 정의하면

% rails s 
=> Booting Puma 
=> Rails 4.2.0 application starting in development on http://localhost:3000 
=> Run `rails server -h` for more startup options 
=> Ctrl-C to shutdown server 
Puma 2.11.0 starting... 
* Min threads: 0, max threads: 16 
* Environment: development 
* Listening on tcp://localhost:3000 

그것은, 그러나, 작동합니까?

+0

http://stackoverflow.com/questions/3842818/how-to-change-rails-3-server-default-port-in-develoment –

+0

http://stackoverflow.com/questions/18103316/how -to-change-default-port-of-a-rails-4-app/19586744 # 19586744 –

+0

그게 어떻게 관련이 있는지, 미안해. –

답변

8

rails s (4.2)은 더 이상 0.0.0.0 (모든 인터페이스)에 바인딩되지 않고 로컬 호스트에만 바인딩됩니다. 따라서 IP 주소를 전달하는 것처럼 실행하기 전에 새로운 구성 옵션을 사용하지 않는 한 작동하도록 설정 옵션이없는 한. 이전 동작을 얻으려면 0.0.0.0을 전달할 수 있습니다.

편집 : 그래, 인해 랙의 변화에 ​​http://guides.rubyonrails.org/4_2_release_notes.html

에서 3.3 절을 참조 이제 서버를 레일 기본적으로 대신 0.0.0.0의 을 로컬 호스트에서 수신 대기합니다. http://127.0.0.1:3000http://localhost:3000은 모두 자신의 기기에서 이전처럼 계속 작동하므로 표준 개발 워크 플로에 미치는 영향은 최소화해야합니다.

그러나이 변화는 더 이상 개발 환경 인 경우 가상 머신에서, 예를 들어, 다른 시스템에서 레일 서버에 액세스 할 수 없습니다 당신은 호스트 시스템에서 를 액세스하고 싶습니다 . 이 경우 이전 동작을 복원하려면 rails server -b 0.0.0.0으로 서버를 시작하십시오.

이렇게하면 네트워크의 신뢰할 수있는 시스템 만이 서버에 액세스 할 수 있도록 방화벽을 올바르게 구성해야합니다.

+4

이것이 중요한 f ** k 업입니다 ... 회귀 분석을하고 독창성을 깨뜨리는 것 ... 라멜라가 개발 서버를 LAN에 노출시키지 못하도록 보호하기 위해서입니까? 그건 방화벽 일이야 ... 방화벽이 없다면 문제가 ... 왜 내가이 돈을 지불해야합니까 ??? 나는 다음 버전에서 "레일즈 s"를 "start_ruby_on_rails_server_on_localhost"로 대체 할 것이라고 추측합니다. –