pasaran/descript — pull request #96 by chestozo (2014-08-13 09:16:53+00:00)
Title: Странное поведение include блока

У меня на проекте есть плавающая бага:
есть `include`, внутри вызывается `http` блок, а результат такой, что я получаю `null` вместо реального json-а.

Кусок лога выглядит так:
```
Aug 12 17:16:29 [debug] [8718.323] [block.call "getUserProfile()"] ended (0ms)
Aug 12 17:16:29 [debug] [8718.323] [block.include "profile.jsx"] ended (0ms)
```
Похоже на то, что не выполняется какое-то условие типа `guard` и блок совсем не выполняется (надо добавить логирование guard-ов, by the way).

**Текущее предположение**: сбоит `include` блок.
Есть одна [подозрительная строка](https://github.com/pasaran/descript/blob/master/lib/de.block.js#L751).
Подозрительная она потому что созданный блок кэшируется и все последующие обращения к этому блоку - идут к закэшированной версии.
Так вот - там делается такое:
```js
var options = no.extend( {}, that.options, { dirname: dirname } );
including.resolve( de.Block.compile(include, options) );
```
где `that.options` это `options` текущего инстанса блока!
Соответственно если у меня в нескольких местах использует `include("file.jsx")` - инстанс блока создаётся один и фиксирует `options` первого запросившего блок!

Долго пытался отдебажить - не получилось (

Демо бага такое:
запрашиваем `one.jsx`:
```js
de.object({
one: de.func(function(params, context) {
context.state.uid = 777;
return 'stat.uid set';
}) +1,
two: de.include('hoho.jsx', {
guard: 'state.uid'
})
})
```
запрашиваем `two.jsx`:
```js
{
three: de.include('hoho.jsx')
}
```
результат:
```js
// one.jsx
{
one: "stat.uid set",
two: "Hoho"
}

// two.jsx
{
three: null
}
```