2011-12-12 23 views
9

Tôi làm rất nhiều phát triển web trên mạng không tin cậy (coffeeshops, wifi của hàng xóm, DEF CON), và tôi giật mình khi ngẫu nhiên, phần mềm buggy chắc chắn (ứng dụng Rails của tôi đang phát triển) nói một cổng trên 0.0. 0,0 và bắt đầu nhận yêu cầu từ tất cả các người. Tôi biết rằng tôi có thể chỉ định địa chỉ của ràng buộc với tùy chọn -b cho máy chủ, nhưng tôi muốn thay đổi mặc định trên toàn cầu để nó luôn chạy theo cách đó trừ khi tôi nói nó theo cách khác. Tất nhiên tôi cũng có thể chạy một số loại tường lửa mà sẽ chặn các kết nối, nhưng tốt hơn không phải để nghe ở nơi đầu tiên. Có tệp '.railsrc' hay tương tự - ít nhất là tệp cài đặt cho mỗi dự án, nhưng tốt nhất là một số tệp cài đặt chung - mà tôi có thể sử dụng để buộc máy chủ chỉ liên kết với 127.0.0.1 theo mặc định?Có cách nào để dừng máy chủ tích hợp của Rails không nghe được trên 0.0.0.0 theo mặc định?

+2

Nếu hệ điều hành của bạn hỗ trợ bí danh, chỉ cần sử dụng để chạy máy chủ thay thế. –

Trả lời

4

Bạn có thể cập nhật/script nộp/đường ray trong bạn ray ứng dụng để phản ánh như sau:

#!/usr/bin/env ruby 
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 

# START NEW CODE 
require "rails/commands/server" 
module Rails 
    class Server 
    def default_options 
     super.merge({ 
     :Host  => 'my-host.com', 
     :Port  => 3000, 
     :environment => (ENV['RAILS_ENV'] || "development").dup, 
     :daemonize => false, 
     :debugger => false, 
     :pid   => File.expand_path("tmp/pids/server.pid"), 
     :config  => File.expand_path("config.ru")    
     }) 
    end 
    end 
end 
# END NEW CODE 

require 'rails/commands' 

Điều này sẽ liên kết ứng dụng đường ray với -host.com khi khởi động. Bạn vẫn có thể ghi đè các tùy chọn từ dòng lệnh.

Tôi không chắc tại sao điều này không được phản ánh trong tài liệu Rails :: Server API. Bạn có thể xem https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb để xem triển khai máy chủ.

Lưu ý rằng trong Rails 4, tệp/script/rails đã được chuyển đến/bin/rails.

+0

Đây chính xác là những gì tôi đang tìm kiếm - cảm ơn! –

1

Không có cách nào để thay đổi toàn cầu, bạn sẽ phải sử dụng -b.

rails s -b <ip address>

+1

Trên Rails 2: 'script/server -b ' –

5

Sử dụng --binding=ip tham số:

rails s --binding=127.0.0.1 

https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb

+1

Tôi biết tùy chọn đó - Tôi muốn có thể thay đổi nó trên toàn cầu, vì vậy tôi không phải chỉ định nó mỗi khi tôi xoay vòng máy chủ. –

+0

Bạn có thể monkeypatch 'Rails :: Server :: Options # parse!' Được định nghĩa trong https://github.com/rails/rails/blob/master/railties/lib/rails/commands/server.rb trong trình khởi tạo trong ứng dụng hoặc thậm chí chỉnh sửa tệp đó trong đá quý trên hệ thống của bạn. – clyfe

Các vấn đề liên quan