【问题标题】:Issue launching ruby on rails in static.rb file在 static.rb 文件中启动 ruby​​ on rails 问题
【发布时间】:2021-05-31 17:47:35
【问题描述】:

我正在尝试在 heroku 上部署 ruby​​ on rails 应用程序,因此我将我的 ruby​​ 版本更新为 ruby​​ 3.0.0 并进行了捆绑更新/捆绑安装,但它说我无法推送,甚至无法运行本地开发服务器。


=> Booting Puma
=> Rails 5.1.7 application starting in development 
=> Run `rails server -h` for more startup options
Exiting
/Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/static.rb:109:in `initialize': wrong number of arguments (given 3, expected 2) (ArgumentError)
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:35:in `new'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:35:in `build'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:99:in `block in build'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:99:in `each'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:99:in `inject'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/actionpack-5.1.7/lib/action_dispatch/middleware/stack.rb:99:in `build'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/engine.rb:508:in `block in app'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/engine.rb:504:in `synchronize'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/engine.rb:504:in `app'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/application/finisher.rb:45:in `block in <module:Finisher>'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/initializable.rb:30:in `run'
    from /Users/username/.rvm/gems/ruby-3.0.0/gems/railties-5.1.7/lib/rails/initializable.rb:59:in `block in run_initializers'
    from /Users/username/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
    from /Users/username/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    from /Users/username/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
...

有问题的 static.rb 文件:

module ActionDispatch
...
  class Static
    def initialize(app, path, index: "index", headers: {})
      @app = app
      @file_handler = FileHandler.new(path, index: index, headers: headers)
    end

    def call(env)
      req = Rack::Request.new env

      if req.get? || req.head?
        path = req.path_info.chomp("/".freeze)
        if match = @file_handler.match?(path)
          req.path_info = match
          return @file_handler.serve(req)
        end
      end

      @app.call(req.env)
    end
  end
end

ruby 版本:ruby 3.0.0p0

rails 版本:Rails 5.1.7

宝石版本:3.2.12

你能帮帮我吗?

【问题讨论】:

  • 在日志中,它显示 Rails 版本为 5.1.7。但是你提到它是 6.1.3.?
  • 我都安装了。我卸载了 6.1.3 但没有任何变化...抱歉造成混乱。
  • 已经有另一个与此相关的问题。请检查。 stackoverflow.com/questions/9087116/…。要么你需要减少你的 ruby​​ 版本或增加 rails 版本。
  • 是的!我通过使用 gem 'rails', '~> 6.1.3' 更改 gemfile 来更新 rails 并进行捆绑更新并且它可以工作。谢谢!

标签: ruby-on-rails ruby heroku deployment rubygems


【解决方案1】:

ruby 2.7+ support 仅从 rails 6 开始可用,因此您需要降级 ruby​​ 或升级 rails

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多