Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

`<module:Rails>': superclass mismatch for class Server (TypeError)

I have seen this and several others question, but their problems are not similar to mine.

I have added the following code to the config/boot.rb , to run my server on port 8081

module Rails
  class Server
    def default_options
      super.merge({Port: 8081})
    end
  end
end

Then I tried to run rails s, and i face with this erorr:

/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)>'
like image 260
Sal-laS Avatar asked Nov 28 '22 14:11

Sal-laS


1 Answers

A better way to do what you want:

require 'rails/commands/server'

module DefaultOptions
  def default_options
    super.merge!(Port: 8081)
  end
end

Rails::Server.prepend(DefaultOptions)

The reason for the error message is because you are attempting to redefine the Rails::Server class and changing it's inheritance structure. Rails::Server inherits from ::Rack::Server, however your code is trying to say it no longer does. Therefore, you get your superclass mismatch error.

like image 111
smoak Avatar answered Dec 05 '22 23:12

smoak