我见过这个问题和其他几个问题,但他们的问题与我的问题不相似。
我在config/boot.rb
中添加了以下代码,以便在8081 端口上运行我的服务器
module Rails
class Server
def default_options
super.merge({Port: 8081})
end
end
end
然后我试着运行rails s
,我面对的是这个错误:
/usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/server.rb:7:in `<module:Rails>': superclass mismatch for class Server (TypeError)
from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/server.rb:6:in `<top (required)>'
做你想做的事的更好方法:
require 'rails/commands/server'
module DefaultOptions
def default_options
super.merge!(Port: 8081)
end
end
Rails::Server.prepend(DefaultOptions)
出现错误消息的原因是您正试图重新定义Rails::Server
类并更改其继承结构。Rails::Server
继承自::Rack::Server
,但是您的代码试图说它不再继承。因此,您会得到超类不匹配错误。
对于Rails5.1,config/boot.rb
中的以下行将起作用:
ENV['PORT'] = '8081'
链接到源。
在Rails 5.2
中
在config/puma.rb
中,我添加了此代码。
#port ENV.fetch("PORT") { 3000 }
bind 'tcp://0.0.0.0:3001'
它起作用了!