Ruby on Rails : 在 Rails 4.2 上 IP 端口 3000 是否被锁定以供外部访问?
Ruby on Rails : is IP port 3000 locked out for external access, on Rails 4.2?
我 运行 我的计算机上的 RoR 应用程序有 2 个版本:
一个用于演示(稳定状态,RoR 4.0),另一个用于开发(RoR 4.2)。
可以使用 http://localhost:3000.
访问这两个版本
但我注意到一个恼人的区别:可以从网络上的另一台计算机访问演示版。开发版不能。
这在Dev版本稳定下来变成Demo的时候会是个大麻烦。我的客户想通过 wlan 在他自己的笔记本电脑上进行测试。
是否有新实现的 "firewall" 功能?
它是我的宝石之一吗?
如果有人能向我解释这种改变的行为,我会很高兴!
对于这两种环境,服务器都是 Webrick WEBrick 1.3.1。
这是我的 gem 个文件:
开发(无法从另一台计算机访问)
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
演示(可从外部计算机访问)
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
感谢您的帮助!
弗雷德
似乎 Rails 4.2 不允许来自 localhost:3000
的外部访问。他们为什么这样做,我不能告诉你。但是,几天前对我有用的一种解决方案是更改您的应用程序用于开发的 IP 地址。所以在启动服务器时调用它:
rails s -b (address) -p 3000 -e development
将 (address) 替换为您的内部 IP 地址(通常 192.168.1.x
)。
您可以简单地从 rails s -b 192.168.1.13
作为我们的默认端口和环境开始,它会自动选择。
替换您的内部 IP 地址。
由于 Rack 的变化,rails 服务器现在默认侦听本地主机而不是 0.0.0.0。参考 4.2 release notes
使用 :
启动你的服务器
rails server -b 0.0.0.0
恢复旧行为
我 运行 我的计算机上的 RoR 应用程序有 2 个版本: 一个用于演示(稳定状态,RoR 4.0),另一个用于开发(RoR 4.2)。 可以使用 http://localhost:3000.
访问这两个版本但我注意到一个恼人的区别:可以从网络上的另一台计算机访问演示版。开发版不能。 这在Dev版本稳定下来变成Demo的时候会是个大麻烦。我的客户想通过 wlan 在他自己的笔记本电脑上进行测试。
是否有新实现的 "firewall" 功能? 它是我的宝石之一吗?
如果有人能向我解释这种改变的行为,我会很高兴!
对于这两种环境,服务器都是 Webrick WEBrick 1.3.1。 这是我的 gem 个文件:
开发(无法从另一台计算机访问)
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
演示(可从外部计算机访问)
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
感谢您的帮助!
弗雷德
似乎 Rails 4.2 不允许来自 localhost:3000
的外部访问。他们为什么这样做,我不能告诉你。但是,几天前对我有用的一种解决方案是更改您的应用程序用于开发的 IP 地址。所以在启动服务器时调用它:
rails s -b (address) -p 3000 -e development
将 (address) 替换为您的内部 IP 地址(通常 192.168.1.x
)。
您可以简单地从 rails s -b 192.168.1.13
作为我们的默认端口和环境开始,它会自动选择。
替换您的内部 IP 地址。
由于 Rack 的变化,rails 服务器现在默认侦听本地主机而不是 0.0.0.0。参考 4.2 release notes 使用 :
启动你的服务器rails server -b 0.0.0.0
恢复旧行为