Про Hanami уже писали на Хабре, и у команды есть, чем нас обрадовать:
Заморозка фич, логгер уровня проекта, автоматическое логгирование запросов HTTP, запросы SQL и миграции. Минорные исправления ошибок.
Релиз v1.0.0.beta1
замораживает разработку нового функционала Hanami для 1.0, вместе с тем добавляет пару новых функций и немного исправлений.
С этого момента Hanami API's будет оставаться стабильным вплоть до версии 2.0.
Стабильный релиз (v1.0.0
) ожидается между концом марта и началом апреля 2017, что совпадает по времени с традицией любования цветущей Сакурой (Hanami) в Японии.
За это время команда Hanami выпустит другие beta и release candidate версии.
Возможности
Hanami сейчас совместим с Ruby 2.3+ (включая последний 2.4) и Rack только 2.0.
Логгер проекта
Мы добавили логгер уровня проекта, доступный как Hanami.logger
. Если тебе нужно занести что-то в лог, сделай примерно так: Hanami.logger.debug "hello"
.
По этой причине, логгеры уровня приложений пришлось убрать (eg. Web.logger
, Admin.logger
).
Следовательно, настройки логгеров для индивидуальных приложений больше не поддерживаются (т.е. внутри apps/web/application.rb
). Чтобы настроить логгер, отредактируйте config/environment.rb
.
Автоматический логгинг
Проект, построенный на Hanami, может автоматически логировать входящие HTTP запросы, SQL запросы и миграции.
Когда проект запущен в режиме разработки, формат логов выглядит более читаемо:
[bookshelf] [INFO] [2017-02-11 15:42:48 +0100] HTTP/1.1 GET 200 127.0.0.1 /books/1 451 0.018576
[bookshelf] [INFO] [2017-02-11 15:42:48 +0100] (0.000381s) SELECT "id", "title", "created_at", "updated_at" FROM "books" WHERE ("book"."id" = '1') ORDER BY "books"."id"
Для продакшена, напротив, JSON стал форматом по умолчанию. JSON проще парсить и он более машино-ориентированный. Это хорошо сочитается с SaaS агрегаторами логов.
{"app":"bookshelf","severity":"INFO","time":"2017-02-10T22:31:51Z","http":"HTTP/1.1","verb":"GET","status":"200","ip":"127.0.0.1","path":"/books/1","query":"","length":"451","elapsed":0.000391478}
Миграции будут писать в поток стандартного вывода операции, совершенные со схемой базы данных.
➜ bundle exec hanami db migrate
[hanami] [INFO] Begin applying migration 20170213123250_create_books.rb, direction: up
[hanami] [INFO] (0.001756s) CREATE TABLE `books` (`id` integer NOT NULL PRIMARY KEY AUTOINCREMENT, `name` varchar(255) NOT NULL, `created_at` timestamp NOT NULL, `updated_at` timestamp NOT NULL)
[hanami] [INFO] (0.001738s) INSERT INTO `schema_migrations` (`filename`) VALUES ('20170213123250_create_books.rb')
[hanami] [INFO] Finished applying migration 20170213123250_create_books.rb, direction: up, took 0.004091 seconds
Улучшенный генератор модели
Генератор модели отныне создает и файл миграции для сущности, которую генерирует.
➜ bundle exec hanami generate model book
create lib/bookshelf/entities/book.rb
create lib/bookshelf/repositories/book_repository.rb
create db/migrations/20170213123250_create_books.rb
create spec/bookshelf/entities/book_spec.rb
create spec/bookshelf/repositories/book_repository_spec.rb
Это сгенерирует сущность, а также соответствующие репозиторий, миграцию, и шаблоны для тестов.
Миграции сразу содержат код для создания таблицы, первичного ключа и временных меток.
# db/migrations/20170213123250_create_books.rb
Hanami::Model.migration do
change do
create_table :books do
primary_key :id
column :created_at, DateTime, null: false
column :updated_at, DateTime, null: false
end
end
end
config/boot.rb
Новые проекты будут создаваться с новым файлом: config/boot.rb
require_relative './environment'
Hanami.boot
Это полезно для запуска сервисов окружения Hanami, особенно без доступа к серверу или консоли. Типичный сценарий — Sidekiq Sidekiq. Если ты хочешь запускать асинхронные задачи с этой очередью сообщений, запусти процесс так:
bundle exec sidekiq -r ./config/boot.rb
Минорные изменения
Чтобы посмотреть полный список изменений, посмотрите в CHANGELOG и features list.
Обновленные релизом гемы
hanami-1.0.0.beta1
hanami-model-1.0.0.beta1
hamami-controller-1.0.0.beta1
hanami-assets-1.0.0.beta1
hanami-mailer-1.0.0.beta1
hanami-helpers-1.0.0.beta1
hanami-view-1.0.0.beta1
hanami-validations-1.0.0.beta1
hanami-router-1.0.0.beta1
hanami-utils-1.0.0.beta1
Contributors
Мы признательны каждому из тех, кто помогал выпустить релиз. Вот список этих замечательный людей:
- Adrian Madrid
- Alfonso Uceda
- Andy Holland
- Bhanu Prakash
- Gabriel Gizotti
- Jakub Pavlík
- Kai Kuchenbecker
- Ksenia Zalesnaya
- Leonardo Saraiva
- Lucas Hosseini
- Marcello Rocha
- Marion Duprey
- Marion Schleifer
- Matias H. Leidemer
- Mikhail Grachev
- Nick Rowlands
- Nikita Shilnikov
- Oana Sipos
- Ozawa Sakuro
- Pascal Betz
- Philip Arndt
- Piotr Solnica
- Semyon Pupkov
- Thorbjørn Hermansen
- Tiago Farias
- Victor Franco
- Vladimir Dralo
- alexd16
- b264
- yjukaku
Как обновиться с предыдущей версии
Если ты хочешь обновить свой проект с v0.9
, обрати внимание на руководство по обновлению.
От переводчика
Так как финальный релиз уже не за горами, пора наконец попробовать этот фреймворк, если вы еще не успели этого сделать.
Для тех, кому привычнее читать на русском — хорошие новости: перевод официальной документации и гайдов уже идет. Смотрите в пул-реквесты, присоединяйтесь, присылайте свои.
Автор: sovetnik