似乎在Sinatra中所有路由处理程序都被写入一个文件中,如果我理解它是一个大/小控制器.有没有办法将它拆分成单独的独立文件,所以当让我们说某人调用"/"时 - 执行一个动作,如果接收到像"/ posts/2"这样的smth,那么另一个动作 - 在PHP中应用的类似逻辑?
我有一个非常简单的Sinatra应用程序,我在测试时遇到了问题.
基本上,当我从浏览器中的测试中知道请求正常工作时,每个请求测试都会返回404.关于问题可能是什么的任何想法?
test_helper.rb中:
ENV["RACK_ENV"] = 'test'
$: << File.expand_path(File.dirname(__FILE__) + '/../lib')
require 'app'
Sinatra::Synchrony.patch_tests!
class Test::Unit::TestCase
include Rack::Test::Methods
end
Run Code Online (Sandbox Code Playgroud)
app_test.rb
require 'test_helper'
class AppTest < Test::Unit::TestCase
def app
@app ||= Sinatra::Application
end
def test_it_says_hello
get "/"
assert_equal 200, last_response.status
end
end
Run Code Online (Sandbox Code Playgroud)
app.rb
$: << 'config'
require "rubygems" require "bundler"
ENV["RACK_ENV"] ||= "development"
Bundler.require(:default, ENV["RACK_ENV"].to_sym)
require ENV["RACK_ENV"]
class App < Sinatra::Base register Sinatra::Synchrony
get '/' do
status 200
'hello, I\'m bat shit crazy and ready to rock'
end
end
Run Code Online (Sandbox Code Playgroud)
的Gemfile
source …Run Code Online (Sandbox Code Playgroud)