【发布时间】:2011-09-05 19:13:44
【问题描述】:
我在异步 Rails 3.1 应用程序上遇到了资产问题,我设法构建了一个显示我的问题的最小示例,但它对我没有多大帮助。
应用程序非常简单,我所做的是: - 使用 3.1(非 rc)创建一个全新的应用程序 - 添加thin+Rack::FiberPool - 设置波旁威士忌(scss mixins) - 运行应用程序
现在我用“rails server thin”启动一个服务器,之后任何请求都会以“堆栈级别太深”结束,只有一个回溯行:/
这是最小的应用程序:https://github.com/schmurfy/assets_crash
这是我在执行请求时得到的回溯: http://dl.dropbox.com/u/1313066/github/crash_assets.png
我试图深入了解问题出在哪里,导致我在文件 template_handlers.rb 中使用 sass-rails:
def sass_options(scope)
importer = self.importer(scope)
options = sass_options_from_rails(scope)
load_paths = (options[:load_paths] || []).dup
load_paths.unshift(importer)
# bnding.pry
options.merge(
:filename => eval_file,
:line => line,
:syntax => syntax,
:importer => importer,
:load_paths => load_paths,
:custom => {
:resolver => Resolver.new(scope)
}
)
end
我尝试使用 Pry(一种 irb 替代方案)进行探索,但我发现更令人费解的是:在 binding.pry 行中,我可以触发堆栈级别太深:
{}.merge(:anything => Resolver.new(scope))
结果是立竿见影的,但我在那个对象中找不到任何可以解释结果的东西。
欢迎任何线索。
【问题讨论】:
-
您是否对系统进行了某些操作以显示光纤堆栈已溢出 (4kb),或者您是否在文档中找到?
-
起初这是一个想法,后来被redmine.ruby-lang.org/issues/3187 证实。在那之后只是为了确定我编译了一个自定义 ruby 1.9.2,在其中我更改了定义堆栈大小的常量(我很快就找到了它,因为我知道要搜索什么)并且我的测试应用程序使用它:/
标签: asynchronous ruby-on-rails-3.1 eventmachine ruby-1.9.2