Ruby on Rails:在Rails 4.2上是否锁定了外部访问的IP端口3000?

use*_*081 3 ip ruby-on-rails webrick

我在计算机上的RoR应用程序上运行了两个版本:一个用于演示(稳定状态,RoR 4.0),另一个用于开发(RoR 4.2).可以使用http:// localhost:3000访问这两个版本.

但我注意到一个恼人的区别:演示版可以从网络上的另一台计算机访问.Dev版本不能.当Dev版本稳定并成为Demo时,这将是一个很大的麻烦.我的客户希望通过wlan在他自己的笔记本电脑上进行测试.

是否有新实施的"防火墙"功能?这是我的宝石之一吗?

如果有人能向我解释这种改变的行为,我会很高兴的!

对于这两种环境,服务器都是Webrick WEBrick 1.3.1.这是我的宝石文件:

开发(无法从另一台计算机访问)

source 'https://rubygems.org'
ruby '2.2.0'

gem 'rails', '~> 4.2.0'
gem 'bootstrap-sass', '~> 3.3.3'
gem 'sass-rails',   '~> 5.0.1'
gem 'coffee-rails', '~> 4.1.0'
gem 'uglifier', '~> 2.7'
gem 'bcrypt', '~> 3.1.10'
gem 'jquery-rails', '~> 4.0.3'
gem 'turbolinks', '2.5.3'
gem 'jbuilder', '~> 2.2.6'
gem 'bootstrap-datepicker-rails', '~> 1.3.1'
gem 'will_paginate', '~> 3.0.7'
gem 'bootstrap-will_paginate', '~> 0.0.10'
gem 'selenium-webdriver', '~> 2.44.0'
gem 'sequenced', '~> 2.0.0'
gem 'annotate', '~> 2.6.5'
gem 'rspec-rails', '~> 3.2.0'
gem 'capybara', '~> 2.4.4'
gem 'factory_girl_rails', '~> 4.5.0' 

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

# gem for dev and test only
group :development, :test do
  gem 'pg'  
end

# gem for ORACLE POC
group :ORACLE do
  gem 'ruby-oci8', '~> 2.1.7'
 gem 'activerecord-oracle_enhanced-adapter', github: 'rsim/oracle-enhanced', branch: 'rails42'
#  gem 'activerecord-oracle_enhanced-adapter', '~> 1.5.5'
end

# gem for production
group :production do
  gem 'rails_12factor'
  gem 'pg'
end
Run Code Online (Sandbox Code Playgroud)

演示(可以从外部计算机访问)

source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails', '~> 4.0.0'
gem 'bootstrap-sass', '2.3.2'
gem 'sass-rails',   '~> 4.0.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'uglifier', '2.1.2'
gem 'bcrypt', '~> 3.1.0'
gem 'jquery-rails', '~> 3.0.4'
gem 'turbolinks', '1.3.0'
gem 'jbuilder', '1.4.2'
gem 'bootstrap-datepicker-rails'
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
gem 'selenium-webdriver', '2.42.0'
gem 'sequenced'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

# gem for dev and test only
group :development, :test do
  gem 'pg'
  gem 'annotate', '2.5.0'
  gem 'rspec-rails', '2.14.0'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.0'
end
# gem for ORACLE POC
group :ORACLE do
  gem 'ruby-oci8', '~> 2.1.0'
  gem 'activerecord-oracle_enhanced-adapter', '~> 1.5.0'
  gem 'annotate', '2.5.0'
  gem 'rspec-rails', '2.14.0'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.0'
end

# gem for production
group :production do
  gem 'rails_12factor'
  gem 'pg'
end
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 !

弗雷德

Rya*_*n K 9

似乎Rails 4.2不允许外部访问localhost:3000.为什么他们这样做,我不能告诉你.但是,几天前为我工作的一个解决方案是更改应用程序用于开发的IP地址.所以在启动服务器时调用它:

rails s -b (address) -p 3000 -e development
Run Code Online (Sandbox Code Playgroud)

用您的内部IP地址(通常192.168.1.x)替换(地址).


Dee*_*ale 7

由于Rack的更改,rails服务器现在默认侦听localhost而不是0.0.0.0.参考4.2发行说明 启动服务器:

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

恢复旧的行为