Вышла Hanami v1.0.0.beta1

в 4:29, , рубрики: framework, hanami, release candidate, ruby, ruby on rails, Разработка веб-сайтов, метки:

image

Про 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

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

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

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

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

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

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

Автор: sovetnik

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js