嗨,如果我有一个包含以下代码的“主”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 在开发模式下重新加载?我必须在我的每个 Controller 文件中放置配置 block 并要求 sinatra/reloader 吗?我想让我的 Controller 继承我的主类的设置。 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 的配置 block 中,尽管我不想这样做。有什么想法吗?
请您参考如下方法:
尝试这样重写
require 'sinatra/base'
require "sinatra/reloader"
class MyApp < Sinatra::Base
configure :development do
register Sinatra::Reloader
also_reload './rest/auth'
end
require "./rest/auth.rb"
get '/' do
erb :home
end
end