- PVSM.RU - https://www.pvsm.ru -

Вышла Hanami v1.0.0.beta1

image

Про Hanami [1] уже писали на Хабре [2], и у команды есть, чем нас обрадовать:

Заморозка фич, логгер уровня проекта, автоматическое логгирование запросов HTTP, запросы SQL и миграции. Минорные исправления ошибок.

Релиз v1.0.0.beta1 замораживает разработку нового функционала [3] Hanami для 1.0, вместе с тем добавляет пару новых функций и немного исправлений.

С этого момента Hanami API's будет оставаться стабильным вплоть до версии 2.0.

Стабильный релиз (v1.0.0) ожидается между концом марта и началом апреля 2017, что совпадает по времени с традицией любования цветущей Сакурой (Hanami) в Японии [4].

За это время команда 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 [5]. Если ты хочешь запускать асинхронные задачи с этой очередью сообщений, запусти процесс так:

bundle exec sidekiq -r ./config/boot.rb

Минорные изменения

Чтобы посмотреть полный список изменений, посмотрите в CHANGELOG [6] и features list [7].

Обновленные релизом гемы

  • 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

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

Как обновиться с предыдущей версии

Если ты хочешь обновить свой проект с v0.9, обрати внимание на руководство по обновлению [38].

От переводчика

Так как финальный релиз уже не за горами, пора наконец попробовать этот фреймворк, если вы еще не успели этого сделать.

Для тех, кому привычнее читать на русском — хорошие новости: перевод официальной документации и гайдов [39] уже идет. Смотрите в пул-реквесты, присоединяйтесь, присылайте свои.

Автор: sovetnik

Источник [40]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby/243887

Ссылки в тексте:

[1] Hanami: http://hanamirb.org

[2] писали на Хабре: https://habrahabr.ru/post/301532/

[3] замораживает разработку нового функционала: https://ru.wikipedia.org/wiki/Заморозка_(программное_обеспечение)

[4] традицией любования цветущей Сакурой (Hanami) в Японии: http://www.japan-guide.com/sakura/

[5] Sidekiq: http://sidekiq.org

[6] CHANGELOG: https://github.com/hanami/hanami/blob/master/CHANGELOG.md

[7] features list: https://github.com/hanami/hanami/blob/master/FEATURES.md

[8] Adrian Madrid: https://github.com/aemadrid

[9] Alfonso Uceda: https://github.com/AlfonsoUceda

[10] Andy Holland: https://github.com/AMHOL

[11] Bhanu Prakash: https://github.com/bhanuone

[12] Gabriel Gizotti: https://github.com/gizotti

[13] Jakub Pavlík: https://github.com/igneus

[14] Kai Kuchenbecker: https://github.com/kaikuchn

[15] Ksenia Zalesnaya: https://github.com/ksenia-zalesnaya

[16] Leonardo Saraiva: https://github.com/vyper

[17] Lucas Hosseini: https://github.com/beauby

[18] Marcello Rocha: https://github.com/mereghost

[19] Marion Duprey: https://github.com/TiteiKo

[20] Marion Schleifer: https://github.com/marionschleifer

[21] Matias H. Leidemer: https://github.com/matiasleidemer

[22] Mikhail Grachev: https://github.com/mgrachev

[23] Nick Rowlands: https://github.com/rowlando

[24] Nikita Shilnikov: https://github.com/flash-gordon

[25] Oana Sipos: https://github.com/oana-sipos

[26] Ozawa Sakuro: https://github.com/sakuro

[27] Pascal Betz: https://github.com/pascalbetz

[28] Philip Arndt: https://github.com/parndt

[29] Piotr Solnica: https://github.com/solnic

[30] Semyon Pupkov: https://github.com/artofhuman

[31] Thorbjørn Hermansen: https://github.com/thhermansen

[32] Tiago Farias: https://github.com/tiagofsilva

[33] Victor Franco: https://github.com/docStonehenge

[34] Vladimir Dralo: https://github.com/vladra

[35] alexd16: https://github.com/alexd16

[36] b264: https://github.com/b264

[37] yjukaku: https://github.com/yjukaku

[38] руководство по обновлению: https://www.pvsm.ru/guides/upgrade-notes/v100beta1

[39] перевод официальной документации и гайдов: https://github.com/translation-gang/ru.hanami.github.io

[40] Источник: https://habrahabr.ru/post/321938/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best