即使默认路由是用模块化风格实现的,Sinatra 也不知道这个小事
Sinatra doesn't know this ditty even when default route is implemented with modular style
我是 运行 MacOS 特立独行者 jruby
,我正在尝试编写一个基本的 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
我想我遗漏了一些非常明显的配置,但似乎可以弄清楚那是什么,有人可以告诉我我遗漏了什么吗?如果需要,我可以分享有关环境的更多详细信息。
当您使用模块化风格时,Sinatra::Application
应用仍然存在,但通常不会发生任何变化。在您的 config.ru
中,您是 运行 这个(空)应用程序,而不是您自己的应用程序。只需将 run Sinatra::Application
更改为
run App
我是 运行 MacOS 特立独行者 jruby
,我正在尝试编写一个基本的 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
我想我遗漏了一些非常明显的配置,但似乎可以弄清楚那是什么,有人可以告诉我我遗漏了什么吗?如果需要,我可以分享有关环境的更多详细信息。
当您使用模块化风格时,Sinatra::Application
应用仍然存在,但通常不会发生任何变化。在您的 config.ru
中,您是 运行 这个(空)应用程序,而不是您自己的应用程序。只需将 run Sinatra::Application
更改为
run App