嗨,如果我有一个'主'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
Run Code Online (Sandbox Code Playgroud)
我想将我的身份验证逻辑放在/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
Run Code Online (Sandbox Code Playgroud)
我需要重新启动服务器才能进行更改但我可以在auth.rb的配置块中抛出重新加载代码,尽管我不愿意.有任何想法吗?
尝试像这样重写
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |