gpt4 book ai didi

ruby - 使用 Sinatra Reloader 的模块化 Sinatra 应用程序?

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:47 29 4
gpt4 key购买 nike

嗨,如果我有一个包含以下代码的“主”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

关于ruby - 使用 Sinatra Reloader 的模块化 Sinatra 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356586/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com