Padrino

Padrino 0.13.2 - New Project Flag, Component Upgrades and Bug Fixes

Padrino 0.13.1 was shipped just over 3 months ago in January 2016 and since then we have had many issues reported and fixed. After a few months of effort, we are excited to announce the release of Padrino 0.13.2! This version is filled with a new project generator flag, minimizing dependence on AS, upgrading a few components and a number of other bug fixes.

New API Project Generator Flag

In this release, we've introduced a new project generator flag of --api. When this flag is used during project generation, the following changes are applied to the new project:

  • Project only has padrino-core and padrino-gen listed as dependencies in the Gemfile.
  • Padrino::Mailer and Padrino::Helpers are not registered or referenced in the project.
  • Automatically sets :renderer, :scripts, and :stylesheet to none in .components.

You can see more about this in pull request #1921. Thanks to @ujifgc for implementing this.

Simplified Initializers

Many apps have configuration code that needs to run first as the project starts up before the application is loaded. Padrino has always supported this with initializers in lib/NAME_initializer.rb. However, there were no guarantees that this code would run before other project code leading to dependency issues due to loading order. In this release, we have introduced the config/initializers folder which get loaded once during startup before any other app code is loaded. Initializers look like this:

# config/initializers/some_useful.rb
# code run once after Padrino.before_load before Padrino.after_load
# good place to define some plugin-related constants
module SomeUsefulInitializer
  def self.registered(app)
    # this is where we setup components or configuration for the project
  end
end

In your app code, for example app/app.rb, we can register this with:

register SomeUsefulInitializer

You can see more about this in pull request #2032. Thanks to @ujifgc for implementing this.

Minimize ActiveSupport Dependence

Over the last few releases, we have been working to minimize our dependency on ActiveSupport. Note that at this time the library is still a required dependency. However, we are incrementally removing all uses of this library from the internals of Padrino whenever possible.

For those interested, we've removed many ActiveSupport methods from internal usage including but not limited to:

Thanks to @ujifgc for leading these efforts.

Component Upgrades

We've upgraded or fixed a few components:

Bug Fixes and Miscellaneous

There are several bug fixes and other updates:

  • WARN #1989 Warn about coming behavior change (@ujifgc)
  • NEW #1987 Generator now fails with invalid namespace (@ujifgc)
  • FIX #2007 Respect Regexp#names at the time of route search (@namusyaka)
  • FIX #2004 Set default alt attribute for image_tag (@namusyaka)
  • FIX #2008 Login button on the admin app now looks as expected (@namusyaka)
  • FIX Remove empty rows and cols from textarea tag (@ujifgc)
  • FIX #2015 Update broken links in the README and docs (@mariozig)
  • FIX #2023 Preserve default_builder set in configure_apps (@ujifgc)
  • FIX #2025 Match plugin names with dashes in their names (@wikimatze)
  • FIX #2029 Don't set a value attribute on label tags (@sshaw)
  • WARN Notice about removing ObjectSpace.classes and ObjectSpace.new_classes in 0.14 (@ujifgc)
  • FIX #2027 Use Module#name instead of Module#to_s (@namusyaka)
  • NEW Logger option :sanitize_encoding (@ujifgc)
  • FIX #2006 load missing AR models before calling seeds.rb (@ujifgc)

Contribute

Please report any issues you encounter with this release! We are working very actively on Padrino and want to make the framework as stable and reliable as possible. That concludes the changelog for this release. As always if you want to keep up with Padrino updates, be sure to follow us on twitter: @padrinorb, join us on IRC at “#padrino” on freenode, open an issue, or discuss on gitter.


comments powered by Disqus