Консоль Rails не выводит операторы SQL в мой журнал разработки

Я просто улучшил динамическую сортировку Ege Özcan для погружения глубоко внутри объектов. Если Data выглядит так:

obj = [
    {
        a: { a: 1, b: 2, c: 3 },
        b: { a: 4, b: 5, c: 6 }
    },
    { 
        a: { a: 3, b: 2, c: 1 },
        b: { a: 6, b: 5, c: 4 }
}];

, и если вы хотите отсортировать его по свойствам a.a, я думаю, что мое улучшение помогает очень хорошо. Я добавляю новую функциональность к таким объектам:

Object.defineProperty(Object.prototype, 'deepVal', {
    enumerable: false,
    writable: true,
    value: function (propertyChain) {
        var levels = propertyChain.split('.');
        parent = this;
        for (var i = 0; i < levels.length; i++) {
            if (!parent[levels[i]])
                return undefined;
            parent = parent[levels[i]];
        }
        return parent;
    }
});

и изменил функцию return_dynamicSort :

return function (a,b) {
        var result = ((a.deepVal(property) > b.deepVal(property)) - (a.deepVal(property) < b.deepVal(property)));
        return result * sortOrder;
    }

И теперь вы можете сортировать по a.a. следующим образом:

obj.sortBy('a.a');

См. Commplete script in JSFiddle

29
задан Inc1982 23 September 2011 в 20:52
поделиться

2 ответа

консоль rails никогда не записывает в файл журнала, но вы можете достичь этого довольно легко, например, если вы выполните следующую команду после запуска консоли rails

ActiveRecord::Base.logger = Logger.new STDOUT

rails будут записывать все операторы SQL в стандартный вывод , таким образом, отобразить их в вашем терминале. и поскольку Logger.new принимает любой поток в качестве первого аргумента, вы можете просто позволить ему записать в rails development.log:

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')
77
ответ дан Marian Theisen 23 September 2011 в 20:52
поделиться

Я нахожусь в Rails 2.3.8, приведенный выше ответ мне не подходит.

ActiveRecord::Base.logger = Logger.new STDOUT

На самом деле работает следующее:

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)

Ссылка http://www.shanison.com/2012/03/05/show-sql-statements-in-rails- консоль /

34
ответ дан Shanison 23 September 2011 в 20:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: