问题描述:
一场堆栈如下
TypeError (singleton can't be dumped):
D:/dev/InstantRails/ruby/lib/ruby/1.8/pstore.rb:349:in `dump'
D:/dev/InstantRails/ruby/lib/ruby/1.8/pstore.rb:349:in `dump'
D:/dev/InstantRails/ruby/lib/ruby/1.8/pstore.rb:330:in `transaction'
D:/dev/InstantRails/ruby/lib/ruby/1.8/cgi/session/pstore.rb:81:in `update'
D:/dev/InstantRails/ruby/lib/ruby/1.8/cgi/session/pstore.rb:88:in `close'
D:/dev/InstantRails/ruby/lib/ruby/1.8/cgi/session.rb:324:in `close'
D:/dev/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:1190:in `close_session'
D:/dev/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:1234:in `process_cleanup_without_flash
D:/dev/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/flash.rb:146:in `process_cleanup_without_filte
D:/dev/InstantRails/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/filters.rb:761:in `process_cleanup_without_ses
该问题的原因是,一些singleton对象不能放到session中。这里的singleton对象指的是没有办法store 或者persistent的对象,比如:上传的文件,这个对这个对象进行persistent是没有意义的,因为该文件所指向的文件源在网络上、在浏览器所在的机器上。
注意,有两种方式会引发这个异常,1、你将一个singleton对象直接放到session中 2、你放到session的对象引用了一个singleton对象。
比如,你将People类的一个事例,放到了session中,该类中引入了一个module ImageSystem,该module专门处理文件上传的。不巧的是,该module的设计者将一个临时文件 tempfile当成了一个instance 变量,于是异常一定会产生。
分享到:
相关推荐
设计模式 t04Singleton
C++完美实现Singleton模式
简单的单例模式举例Singleton 分为恶汉式 懒汉式
1、没有构造函数(DEFINE_SINGLETON_DEFAULT); 2、有构造函数,构造函数没有参数(DEFINE_SINGLETON_CONSTRUCT_NO_PARAM); 3、有构造函数,构造函数有没有参数版本(DEFINE_SINGLETON_CONSTRUCT_WITH_DEFAULT)...
Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例化它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()...
单例模式 Singleton 单例模式线程安全问题和拓展
Singleton pattern单例模式应用
单例模式,Singleton两种代码实现。一般实现方法,泛型实现方法(推荐)
Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)
Laravel开发-singleton-pattern 帮助程序包来实现单例类。
用VC实现的singleton 模式 在VS03,VC6.0下编译通过
singleton是最常见的设计模式,但是要设计好却是不容易,尤其是多线程的时候,需要考虑线程安全的问题.
Android Singleton单例模式运用详解
java singleton 不解释不解释不解释不解释
singleton pattern 的定义 主要应用方法 优缺点 通过代码 具体分析解释
在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...
设计模式-Singleton与Factory
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
单例模式(Singleton)