Rails 5.1.4修改启动端口报错:无法加载rails/commands/server文件
解决Rails 5.1.4设置默认启动端口时的LoadError问题
Hey,我来帮你搞定这个报错!你遇到的cannot load such file -- rails/commands/server错误,核心原因是你在boot.rb里太早尝试加载Rails的Server模块了——boot.rb是Rails启动流程里非常早期的文件,这时候Rails的核心命令组件还没初始化完成,自然找不到这个文件。
下面给你几个靠谱的解决方案,按推荐度排序:
方案1:修改Puma配置(最推荐,符合Rails 5规范)
Rails 5.1默认用Puma当服务器,直接改它的配置文件是最正统的做法:
打开项目里的config/puma.rb,添加或者修改这一行代码:
# 默认端口设为3020,同时支持用环境变量PORT来覆盖 port ENV.fetch("PORT") { 3020 }
保存之后再跑rails s,就会自动用3020端口启动啦。
方案2:用初始化器实现Monkey Patch
如果你非要用之前那种Monkey Patch的方式,别把代码塞在boot.rb里,放到config/initializers目录下就行——这里的文件会在Rails环境完全加载后执行,不会有加载顺序问题:
- 在
config/initializers文件夹里新建一个文件,比如叫default_server_port.rb - 把你之前的代码复制进去:
require 'rails/commands/server' module DefaultOptions def default_options super.merge!(Port: 3020) end end Rails::Server.send(:prepend, DefaultOptions)
这样再启动服务器就不会报错了。
方案3:临时指定端口(快速应急)
如果只是偶尔需要用3020端口,直接在启动命令后面加参数就行:
rails s -p 3020
内容的提问来源于stack exchange,提问作者Ninja
相关产品推荐
相关产品推荐

