默认绑定 rails 服务器到 127.0.0.1
Bind rails server to 127.0.0.1 by default
我想将 rails 服务器绑定到 127.0.0.1,而不是 0.0.0.0,因此当我在咖啡店工作时无法访问它。
是否有一个配置文件,我可以在其中指定此选项,这样我就不必通过命令行开关:
rails server -b 127.0.0.1
?
默认情况下,您可以制作一个 bash 脚本来仅 运行 命令:
#!/bin/bash
rails server -b 127.0.0.1
将其放在与您的项目相同的文件夹中,随意命名(例如devserv
),然后
chmod +x devserv
而你所要做的就是./devserv
如果您正在搜索 Rails 5:
在Rails ~> 4.0
中您可以自定义服务器的引导部分class:
在/config/boot.rb
中添加这行:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({Port: 10524, Host: '127.0.0.1'})
end
end
end
已经回答了这个问题:
How to change Rails 3 server default port in develoment?
如果您将默认选项放在 config/boot.rb
上,那么 rake 和 rails 的所有命令属性都会失败(例如:rake -T
或 rails g model user
) ! 因此,将此附加到 bin/rails
行 require_relative '../config/boot'
之后,代码仅针对 rails 服务器命令执行:
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '127.0.0.1', Port: 10524)
end
end
end
end
bin/rails
文件如下所示:
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
# Set default host and port to rails server
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '127.0.0.1', Port: 10524)
end
end
end
end
require 'rails/commands'
我在开发中使用 Foreman 作为流程管理员。
将 gem 'foreman'
添加到您的 Gemfile 并 运行 宁 bundle install
后,在您的应用程序目录的根目录中创建一个文件 Procfile
。
虽然您可以添加行来管理其他进程,但我的只是读取:
web: rails server -p $PORT -b 127.0.0.1
然后,通过 Procfile 启动 Rails 服务器,运行 foreman start
。如果这里有其他进程(Redis、worker),它们将同时启动。
如果您使用的是 puma,有几种方法:
- 在
config/puma
中添加:
bind 'tcp://localhost:3001'
但是,这会导致 puma 监听两个或更多端口。
- 在
config/puma
中添加:
port ENV.fetch("PORT") { 3000 }, 'localhost'
- 如果您不想破坏您的 puma 文件,请尝试在
<puma_gem_path>/lib/puma/configuration.rb
中修改 puma 的默认配置,然后执行以下操作:
DefaultTCPHost = 'localhost'
我想将 rails 服务器绑定到 127.0.0.1,而不是 0.0.0.0,因此当我在咖啡店工作时无法访问它。
是否有一个配置文件,我可以在其中指定此选项,这样我就不必通过命令行开关:
rails server -b 127.0.0.1
?
默认情况下,您可以制作一个 bash 脚本来仅 运行 命令:
#!/bin/bash
rails server -b 127.0.0.1
将其放在与您的项目相同的文件夹中,随意命名(例如devserv
),然后
chmod +x devserv
而你所要做的就是./devserv
如果您正在搜索 Rails 5:
在Rails ~> 4.0
中您可以自定义服务器的引导部分class:
在/config/boot.rb
中添加这行:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({Port: 10524, Host: '127.0.0.1'})
end
end
end
已经回答了这个问题:
How to change Rails 3 server default port in develoment?
如果您将默认选项放在 config/boot.rb
上,那么 rake 和 rails 的所有命令属性都会失败(例如:rake -T
或 rails g model user
) ! 因此,将此附加到 bin/rails
行 require_relative '../config/boot'
之后,代码仅针对 rails 服务器命令执行:
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '127.0.0.1', Port: 10524)
end
end
end
end
bin/rails
文件如下所示:
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
# Set default host and port to rails server
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '127.0.0.1', Port: 10524)
end
end
end
end
require 'rails/commands'
我在开发中使用 Foreman 作为流程管理员。
将 gem 'foreman'
添加到您的 Gemfile 并 运行 宁 bundle install
后,在您的应用程序目录的根目录中创建一个文件 Procfile
。
虽然您可以添加行来管理其他进程,但我的只是读取:
web: rails server -p $PORT -b 127.0.0.1
然后,通过 Procfile 启动 Rails 服务器,运行 foreman start
。如果这里有其他进程(Redis、worker),它们将同时启动。
如果您使用的是 puma,有几种方法:
- 在
config/puma
中添加:
bind 'tcp://localhost:3001'
但是,这会导致 puma 监听两个或更多端口。
- 在
config/puma
中添加:
port ENV.fetch("PORT") { 3000 }, 'localhost'
- 如果您不想破坏您的 puma 文件,请尝试在
<puma_gem_path>/lib/puma/configuration.rb
中修改 puma 的默认配置,然后执行以下操作:
DefaultTCPHost = 'localhost'