我正在使用Gmail Gem。每次我从gmail请求数据时,我都不想运行Gmail.connect。我想将连接存储到变量中,以便我可以在任何地方访问它。
首次尝试,我将其存储到全局变量 @gmail_session 中,但在我尝试使用远程调用获取变量后,我无法访问该变量。
第二次尝试,我将连接保存到会话变量 session [:gmail] 。我认为这将是解决方案,但我收到此错误消息:没有为类Thread定义marshal_dump
请帮我存储我的Gmail连接:)
谢谢!
答案 0 :(得分:0)
Rails newb在这里,所以可能有一个更好的方法,但这里是我的20 ...
使用application_controller创建一个方法,在其中加载@gmail_session对象,这是一个实例var,可供所有控制器/视图使用。
例如
def get_using_remote_call
@gmail_session = //do some stuff
end
然后你可以继续在application_controller中添加一个after_filter,每次加载任何控制器时都会调用该函数,因为在他们第一次加载生产后它们被缓存,这应该不会造成问题,直到你的应用获得10000次访问一天......
另一种做同样事情的方法是在config / libs中包含一个模块,并在config / application.rb中将目录添加到autoload中,如下所示
config.autoload_paths += %W(#{config.root}/lib)
这会自动加载模块/类/任何内容然后你可以简单地调用函数get_using_remote_call
并将其视为一个对象并将其链接起来,或者你可以
@gmail_session = get_using_remote_call
或者只是在控制器的after_filter / before_filter中使用它:)
希望这有帮助!