【问题标题】:`<module:Rails>': superclass mismatch for class Server (TypeError)`<module:Rails>':类 Server 的超类不匹配(TypeError)
【发布时间】:2016-02-24 10:53:04
【问题描述】:

我看过this和其他几个问题,但他们的问题和我的不一样。

我已将以下代码添加到 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)>'

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    Rails 5.2

    config/puma.rb我添加了这段代码。

    #port        ENV.fetch("PORT") { 3000 }
    bind        'tcp://0.0.0.0:3001'
    

    而且它有效!

    【讨论】:

      【解决方案2】:

      对于 Rails 5.1config/boot.rb 中的以下行可以解决问题:

      ENV['PORT'] = '8081'
      

      Link to the source.

      【讨论】:

        【解决方案3】:

        做你想做的更好的方法:

        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,但是您的代码试图表明它不再如此。因此,您会收到超类不匹配错误。

        【讨论】:

        • 只是一个成功报告:这适用于 Rails 5。我已将此 sn-p 添加到 config/boot.rb
        猜你喜欢
        • 2018-03-10
        • 2013-12-13
        • 2017-11-03
        • 1970-01-01
        • 2021-12-29
        • 2022-11-03
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        相关资源
        最近更新 更多