我在做rake资产:预编译并发现了这个错误:
rake aborted!
error evaluating function asset-url: method `method_missing' called on terminated object (0x007fe94f714518 flags=0x0 klass=0x0)
(in /Users/huming/work/strikingly/Bobcat/app/assets/stylesheets/themes/bright/main.less)
at less.Parser.parser.parse.i (/Users/huming/.rvm/gems/ruby-1.9.3-p448@bobcat/gems/less-2.3.3/lib/less/js/lib/less/parser.js:421:31)
我使用的是less-rails-2.3.2;我也试过less-rails-2.4.2,它也不行。 知道这是怎么发生的吗?
答案 0 :(得分:0)
这似乎是由于Ruby 1.9.3中弱引用的工作原因引起的,导致它们过早被垃圾收集。然后,当试图使用垃圾收集对象时,Ruby可以理解崩溃。我也间歇地体验过它。
[S] adly,由于1.9.3上WeakRef实现的基本缺陷,没有简单的解决方法
可能有一个比ref gem提供的更加坚固的解决方法,但我个人没有足够的带宽使其成为优先考虑因为它适用于rubinius和MRI 2.0
https://github.com/cowboyd/therubyracer/issues/176#issuecomment-20147324
下面是一个在代码中解决的例子,它通过显式标记过早收集垃圾的东西:
- params[i] = sqlite3val2rb(argv[i]);
+ VALUE param = sqlite3val2rb(argv[i]);
+ RB_GC_GUARD(param);
+ params[i] = param;