jennifer v0.9.0 Release Notes

Release Date: 2020-05-24 // almost 4 years ago
  • ๐Ÿ”„ Changelog

    General

    • โž• add Crystal 0.34.0 support
    • add Jennifer::Presentable with abstract methods declarations (#attribute, #errors, #human_attribute_name, #attribute_metadata, #class_name)

    QueryBuilder

    • Query#initialize now accept Adapter::Base as a second (optional) argument
    • OrderItem is renamed to OrderExpression to avoid possible name collisions

    Model

    • fix an issue with rendering new_record and destroyed system variables by #to_json
    • 0๏ธโƒฃ Resource.table_prefix now returns underscored namespace name (if any) by default
    • Base includes Jennifer::Presentable
    • โž• add Translation#class_name method to return underscored class name
    • โž• add Mapping#attribute_metadata to return attribute metadata by it's name
    • remove Base::primary_field_type
    • Prevent compile time error with models named Model or Record

    View

    • fix an issue with rendering new_record and destroyed system variables by #to_json
    • remove Base::primary_field_type

    Adapter

    • db connection is established on the first request no on adapter initialization
    • ๐Ÿ‘€ Adapter.adapter_class raises BaseException if no valid Config.adapter is specified
    • .command_interface, .create_database, .drop_database, .generate_schema, .load_schema, .db_connection, .connection_string, .database_exists? now are instance methods
    • Base#initialize now excepts Config instance
    • respect host in Jennifer::Postgres::CommandInterface#database_exists?
    • escape connection URI segments
    • ๐ŸŒฒ Config#logger now is Log instead of Logger
    • โž• add read/write adapter segregation
    • ๐Ÿ—„ deprecate .adapter & .adapter_class
    • โœ‚ remove .query, .exec & .scalar

    Config

    • .reset_config invokes #initialize instead of creating new instance

    Migration

    • Base#schema_processor is no more public api
    • Runner.create and Runner.drop now accept option Adapter::Base instance
    • pass to_table in TableBuilder::DropForeignKey#process
    • ๐Ÿ›  fix TableBuilder::CreateTable#reference - now it takes into account given SQL type for the foreign key column
    • add #add_reference, #drop_reference, #add_timestamps to TableBuilder::CHangeTable
    • TableBuilder::CHangeTable#drop_index also accepts single column name
    • โœ‚ remove deprecated TableBuilder::CreateTable#index overrides

    Record

    • ๐Ÿšš #initialize(DB::ResultSet) is removed