- PVSM.RU - https://www.pvsm.ru -
Про 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
Мы признательны каждому из тех, кто помогал выпустить релиз. Вот список этих замечательный людей:
Если ты хочешь обновить свой проект с 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
Нажмите здесь для печати.