【问题标题】:Sinatra doesn't know this ditty even when default route is implemented with modular style即使默认路由以模块化风格实现,Sinatra 也不知道这个小曲
【发布时间】:2015-01-17 23:39:43
【问题描述】:

我正在使用 jruby 运行 MacOS 小牛,并正在尝试编写一个基本的 modular sinatra 应用程序。这是我的config.ru 的样子

require 'app/app'   
run Sinatra::Application

我用rackup 像这样调用它,你可以看到404 错误 -

rackup -s puma -p 8080
Puma 2.10.2 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:8080
127.0.0.1 - - [17/Jan/2015:18:32:37 -0500] "GET / HTTP/1.1" 404 437 0.0290
127.0.0.1 - - [17/Jan/2015:18:32:37 -0500] "GET / HTTP/1.1" 404 437 0.0980
127.0.0.1 - - [17/Jan/2015:18:32:37 -0500] "GET /__sinatra__/404.png HTTP/1.1" 304 - 0.0120
127.0.0.1 - - [17/Jan/2015:18:32:37 -0500] "GET /__sinatra__/404.png HTTP/1.1" 304 - 0.0170

这就是我的source 的样子 -

➜ less app/app.rb
require 'sinatra/base'

class App < Sinatra::Base

  get '/' do
    "Hello World"
  end
end

如果我将源更改为经典方式

➜ cat app/app.rb
require 'sinatra'

#class App < Sinatra::Base

  get '/' do
    "Hello World"
  end
#end

然后像这样调用它,它工作得很好 -

➜ ruby app/app.rb
Puma 2.10.2 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:4567
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from Puma
127.0.0.1 - - [17/Jan/2015:18:36:20 -0500] "GET / HTTP/1.1" 200 11 0.0250

我想我遗漏了一些非常明显的配置,但似乎可以弄清楚那是什么,有人可以告诉我我遗漏了什么吗?如果需要,我可以分享有关环境的更多详细信息。

【问题讨论】:

    标签: ruby sinatra jruby modular


    【解决方案1】:

    当您使用模块化样式时,Sinatra::Application 应用程序仍然存在,但通常没有任何反应。在您的config.ru 中,您正在运行这个(空)应用程序而不是您自己的。只需将run Sinatra::Application 更改为

    run App
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2014-07-09
      • 2016-10-14
      • 1970-01-01
      • 2015-05-07
      • 2014-02-01
      • 1970-01-01
      相关资源
      最近更新 更多