嗨,如果我有一个包含以下代码的“主”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 的配置块中抛出该重新加载代码,尽管我不想这样做。有任何想法吗?