<commit_before># chrno_audit

Простейшая реализация аудита для ActiveRecord.

## Установка

Добавьте в Gemfile:

```ruby
gem 'chrno_audit'
```

и запустите `bundle install`. Затем нужно будет сгенерировать необходимые для работы файлы и создать таблицы в БД:

```console
rails g chrno_audit:install
rake db:migrate
```

Помните, что необходимо перезапустить приложение, если оно уже запущено.

## Пример использования:

Допустим вы хотите применить chrno_audit для аудита модели Page. Для этого необзодимо запустить специальный rails generatorкак показано ниже:

```console
rails g chrno_audit:view MODEL
```

Допустим вы запустили эту команду так:

```console
rails g chrno_audit:view page
```

В результате эта команда проведет следующие манипуляции:

1) Скопирует пример view-файла в папку app/views/pages/history и файл стилей в app/assets/stylesheets/shared/chrno_audit.css.sass.

2) Создаст запись в routes.rb следующего вида:

```ruby
  chrno_audit_for :pages
```

3) Выведет инструкции с дальнейшими действиями. Посмотрите их прежде чем читать дальше. Например тут[https://raw.github.com/Undev/chrno_audit/views/lib/generators/chrno_audit/templates/README].

После установки в моделях становится доступен единственный метод `audit(*params)`, подключающий модель к системе аудита. В качестве параметров методу audit можно передавать список полей для аудита (по умолчанию все), например:

```ruby
class Page < ActiveRecord::Base
  audit :text, :subject
end
```

Можно использовать псевдо-поле :all, если необходим аудит всех полей:

```ruby
class Page < ActiveRecord::Base
  audit :all
end
```

Можно указывать список полей, которые необходимо игнорировать при аудите:

```ruby
class Page < ActiveRecord::Base
  audit :all, :except => [ :author ]
end
```

Помимо действий, которые подвергаются аудиту по умолчанию (create, update, destroy) можно указать свои:

```ruby
class Page < ActiveRecord::Base
  audit :all, :when => [ :convert ]
end
```

Параметр `:context` принимает в качестве своего значения хеш следующего вида:

```ruby
{
  block_name:        block,
  another_block_name: another_block
  ...
}
```

Все блоки исполняются в контексте контроллера и результат их выполнения записывается в поле context таблицы audit_log (по умолчанию это ChrnoAudit.config.default_context). Пример использования:

```ruby
class Page < ActiveRecord::Base
  audit :all, :context => {
      ip:         -> { request.remote_addr },
      some_value: -> { "value" }
    }
end
```


<commit_msg>README.md fix<commit_after># chrno_audit

Простейшая реализация аудита для ActiveRecord.

## Установка

Добавьте в Gemfile:

```ruby
gem 'chrno_audit'
```

и запустите `bundle install`. Затем нужно будет сгенерировать необходимые для работы файлы и создать таблицы в БД:

```console
rails g chrno_audit:install
rake db:migrate
```

Помните, что необходимо перезапустить приложение, если оно уже запущено.

## Пример использования:

Допустим вы хотите применить chrno_audit для аудита модели Page. Для этого необзодимо запустить специальный rails generatorкак показано ниже:

```console
rails g chrno_audit:view MODEL
```

Допустим вы запустили эту команду так:

```console
rails g chrno_audit:view page
```

В результате эта команда проведет следующие манипуляции:

1) Скопирует пример view-файла в папку app/views/pages/history и файл стилей в app/assets/stylesheets/shared/chrno_audit.css.sass.

2) Создаст запись в routes.rb следующего вида:

```ruby
  chrno_audit_for :pages
```

3) Выведет инструкции с дальнейшими действиями. Посмотрите их прежде чем читать дальше. Например [тут](https://raw.github.com/Undev/chrno_audit/views/lib/generators/chrno_audit/templates/README).

После установки в моделях становится доступен единственный метод `audit(*params)`, подключающий модель к системе аудита. В качестве параметров методу audit можно передавать список полей для аудита (по умолчанию все), например:

```ruby
class Page < ActiveRecord::Base
  audit :text, :subject
end
```

Можно использовать псевдо-поле :all, если необходим аудит всех полей:

```ruby
class Page < ActiveRecord::Base
  audit :all
end
```

Можно указывать список полей, которые необходимо игнорировать при аудите:

```ruby
class Page < ActiveRecord::Base
  audit :all, :except => [ :author ]
end
```

Помимо действий, которые подвергаются аудиту по умолчанию (create, update, destroy) можно указать свои:

```ruby
class Page < ActiveRecord::Base
  audit :all, :when => [ :convert ]
end
```

Параметр `:context` принимает в качестве своего значения хеш следующего вида:

```ruby
{
  block_name:        block,
  another_block_name: another_block
  ...
}
```

Все блоки исполняются в контексте контроллера и результат их выполнения записывается в поле context таблицы audit_log (по умолчанию это ChrnoAudit.config.default_context). Пример использования:

```ruby
class Page < ActiveRecord::Base
  audit :all, :context => {
      ip:         -> { request.remote_addr },
      some_value: -> { "value" }
    }
end
```



{'fraction_non_alphanumeric': 0.09140216954600242, 'fraction_numerical': 0.0012053033346725592, 'mean_word_length': 4.83704572098476, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '272842', 'n_tokens_mistral': 1980, 'n_tokens_neox': 2166, 'n_words': 535}