为了帮助跟踪用户操作以进行调试,我们正在考虑将会话的登录用户ID添加到每个日志消息(如果适用).我们的堆栈由Rails和Authlogic组成.我尝试了几条不同的路线,但到目前为止还没有100%成功.
由于Authlogic不以明文形式在会话数据中存储用户ID,因此我们必须等待它被初始化.只有在ApplicationController初始化并设置为活动的Authlogic控制器之后才会发生这种情况.因此,我们不能依赖代码config/application.rb.在我看来,唯一的解决方案是稍后更换记录器.
我试图通过继承Logger并覆盖add()方法来创建一个新的记录器类:
class UserLogger < Logger
def add(severity, message = nil, progname = nil, &block)
begin
session = UserSession.find
rescue
return super(severity, message, progname, &block)
end
user = session.user if session
if block_given? || !user
return super(severity, message, progname, &block)
end
unless message.nil?
message = "[#{user.id}] " + message
end
super severity, message, progname, &block
end
end
Run Code Online (Sandbox Code Playgroud)
这似乎对原木前哨没有任何影响.我也试过搞乱TaggedLogging,但这似乎不是一个好的解决方案,因为你必须在块中抛出任何标记的代码.
我也尝试config.log_tags通过给它一个Proc来定义应用程序配置,但Authlogic抛出相同的Authlogic::Session::Activation::NotActivatedError异常.试图捕获这个异常使得Ruby变成了一个非常奇怪的状态,似乎是某个无限循环并将我的CPU固定在100%.
是否有一个简单的解决方案或一个我完全失踪?
我目前正在使用emscripten编译支持在C中编写文件解析库.它从用户读取二进制文件并解析它的文件路径.
我知道emscripten不支持直接加载文件,而是使用虚拟文件系统.有没有办法将给定路径的文件加载到虚拟文件系统中,以便emscripten编译的C lib可以读取它?我正在寻找NodeJS和浏览器的解决方案.
我正在尝试使用 NSGradient 并将其保存为 RubyMotion 中的图像,但我无法让它工作。这是我到目前为止的代码:
gradient = NSGradient.alloc.initWithColors(colors,
atLocations: locations.to_pointer(:double),
colorSpace: NSColorSpace.genericRGBColorSpace
)
size = Size(width, height)
image = NSImage.imageWithSize(size, flipped: false, drawingHandler: lambda do |rect|
gradient.drawInRect(rect, angle: angle)
true
end)
data = image.TIFFRepresentation
data.writeToFile('output.tif', atomically: false)
Run Code Online (Sandbox Code Playgroud)
它运行没有错误,但保存的文件是空白的,没有图像数据。任何人都可以帮助我指出正确的方向吗?
authlogic ×1
c ×1
emscripten ×1
filesystems ×1
logging ×1
macos ×1
node.js ×1
nsgradient ×1
nsimage ×1
ruby ×1
rubymotion ×1
session ×1