こんにちは、次のコードを含む「メイン」sinatra ファイルがあれば、
require 'sinatra'
require "sinatra/reloader"
class MyApp < Sinatra::Base
configure do
require "./rest/auth.rb"
register Sinatra::Reloader
also_reload '/rest/auth'
end
get '/' do
erb :home
end
end
また、認証ロジックを /rest/auth.rb 内に配置したかったのですが、開発モードで /rest/auth.rb をリロードするにはどうすればよいですか? 構成ブロックを配置し、すべてのコントローラー ファイルに sinatra/reloader を要求する必要がありますか? コントローラーがメイン クラスの設定を継承するようにしたいと考えています。auth.rb 内のコードは次のとおりです。
class MyApp < Sinatra::Base
set(:auth) do |*roles| # <- notice the splat here
condition do
unless logged_in?
session[:success_url] = request.path_info
redirect '/'
end
end
end
def logged_in?
current_user
end
def current_user
if session[:user_id]
u = User.find(:id=>"#{session[:user_id]}")
else
false
end
end
end
変更を有効にするにはサーバーを再起動する必要がありますが、そのリロード コードを auth.rb の構成ブロックにスローすることはできますが、そうしたくありません。何か案は?