【问题标题】:Sinatra namespace not workingSinatra 命名空间不起作用
【发布时间】:2017-08-21 13:16:24
【问题描述】:

我有一个 Sinatra 应用程序,我想在其中使用命名空间使其更干净。我已经安装了sinatra-contrib gem 并添加了require 'sinatra/namespace'。当我使用puma config.ru 运行应用程序时,我不断收到以下错误:

Puma starting in single mode...
* Version 3.10.0 (ruby 2.4.1-p111), codename: Russell's Teapot
* Min threads: 0, max threads: 16
* Environment: development
/usr/local/lib/ruby/gems/2.4.0/gems/backports-3.6.0/lib/backports/1.8.7/fixnum/div.rb:1: warning: constant ::Fixnum is deprecated
/usr/local/lib/ruby/gems/2.4.0/gems/backports-3.6.0/lib/backports/1.8.7/fixnum/fdiv.rb:1: warning: constant ::Fixnum is deprecated
! Unable to load application: Errno::EBADF: Bad file descriptor @ fptr_finalize_flush - /usr/local/lib/ruby/gems/2.4.0/gems/backports-3.6.0/lib/backports/1.9.1/io/open.rb
/usr/local/lib/ruby/gems/2.4.0/gems/backports-3.6.0/lib/backports/1.9.1/io/open.rb:2:in `close': Bad file descriptor @ fptr_finalize_flush - /usr/local/lib/ruby/gems/2.4.0/gems/backports-3.6.0/lib/backports/1.9.1/io/open.rb (Errno::EBADF)

我的代码如下所示:

require 'sinatra'
require 'sinatra/namespace'

namespace '/v1/picking' do
  post '/tasks/:task_id/barcodes/create' do
    barcode_content = JSON.parse(request.body.read)

    # DO SOME STUFF

    return 'OK'
  end
end

我正在使用 Ruby 2.4.1 和 Sinatra 2.0.0。

我做错了什么?

【问题讨论】:

  • 看起来可能是backports 中的错误。如果您将backports gem 更新到最新版本会怎样?
  • 你的环境是 OSX 还是 Linux?
  • @IzumiSy 这是 OSX

标签: ruby sinatra


【解决方案1】:

Backports 3.6.0 由于一些错误而被破坏。官方说已经修好了。我检查了 3.8.0,它运行良好。升级你的宝石。

https://github.com/marcandre/backports/issues/91

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2013-06-06
    • 2015-02-22
    相关资源
    最近更新 更多