私はSinatraを使用しています。プロジェクトを分離したファイル内の特定のアクションのすべての要求を保持するように構造化したいと考えています。インクルードファイルにsinatraリクエストルートを定義します
私が遭遇している問題は、経路がsinatraに登録されていないことです。ルートにファイルを含めても、常に404とnot_foundハンドラを実行します。
ここに私が達成しようとしているものの例があります。 Rackupはユーザーと投稿が必要なInfoアプリを起動します。 Infoにはエラーのみが含まれ、ハンドラは見つかりません。関連するルートは対応する必須ファイルに格納されます。
config.ru:
require 'rubygems'
require 'bundler'
Bundler.require
require 'rack'
require './info.rb'
run Info
info.rb:
require 'rubygems'
require 'bundler'
require 'sinatra'
class Info < Sinatra::Base
require './user.rb'
require './post.rb'
# 500 handler
error StandardError do
status 500
content_type :json
return '{"error": "Internal server error", "code": 500}'
end
not_found do
status 404
content_type :json
return '{"error": "Page not found", "code": 404}'
end
end
とuser.rb(post.rbが同じになります):
require 'rubygems'
require 'bundler'
require 'sinatra'
get '/1/user/:userid' do
# request stuff
end