У меня проблема с активами в асинхронном приложении rails 3.1, мне удалось создать минимальный пример, показывающий мою проблему, но это мне мало помогло.
Приложение очень простое, что я сделал: - создал новое приложение с 3.1 (не rc) - добавил thin+Rack::FiberPool - настроил bourbon (scss mixins) - запустил приложение
Теперь я запускаю сервер с «тонким сервером rails», после чего любой запрос окажется на «слишком глубоком уровне стека» только с одной строкой обратной трассировки:/
Вот минимальное приложение: https://github.com/schmurfy/assets_crash.
Вот трассировка, которую я получаю при выполнении запроса: http://dl.dropbox.com/u/1313066/github/crash_assets.png
Я попытался покопаться, чтобы увидеть, где была проблема, которая привела меня в sass-rails в файле template_handlers.rb:
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))
Результат мгновенный, но я не могу найти в этом объекте ничего, что могло бы объяснить результат.
Любое руководство будет приветствоваться.