middleman-s3_sync 4.6.4 released

I’ve just released version 4.6.4 of middleman-s3_sync, a gem that synchronizes Middleman-built websites to Amazon S3.

This release completely removes the map gem dependency and replaces it with a native Ruby implementation.

Background

The map gem provides a string/symbol indifferent hash implementation. After being stable at version 6.6.0 for about a decade, the original author unexpectedly released version 8.x, which introduced breaking changes that caused installation failures.

While we temporarily locked the dependency to version 6.6.0 in v4.6.3, it became clear that relying on an unmaintained library was not a sustainable solution.

What Changed

Version 4.6.4 introduces IndifferentHash, a simple native Ruby class that provides the same functionality as the map gem:

  • String/symbol indifferent key access
  • Dot notation for accessing values
  • Zero external dependencies
  • Fully tested with the existing test suite

The implementation is straightforward and maintainable, living entirely within the gem’s codebase.

Benefits

  • More stable: No dependency on unmaintained external libraries
  • Fewer dependencies: One less gem to install and manage
  • Better control: The functionality is now part of the gem itself
  • No breaking changes: The API remains exactly the same

Upgrading

To upgrade to the latest version, update your Gemfile:

1
gem 'middleman-s3_sync', '~> 4.6.4'

Then run:

1
bundle update middleman-s3_sync

This is a drop-in replacement with no breaking changes—your existing code will continue to work exactly as before.

Acknowledgments

Thanks to Chad Wilson for identifying the issue in PR #165 and proposing the initial workaround.

As always, the source code is available on GitHub, and the gem is available on RubyGems.

I'm Back!

A whole lot has happened since I last wrote here. I’ve been busy with work, family, hobbies,and personal projects. I’ve also dealt with some personal issues and challenges that have shaped my perspective and priorities. I’ve learned a lot about myself and...

Read More...

Moving Out of the Home Office

New Office

I was mostly on distributed teams when I worked at Sun Microsystems. Sometimes it was on a multi-site team, but more often than not I was on teams where I was one of the few, if not only, members based in Colorado. As a result, I had a well appointed...

Read More...

Cups of Coffee

coffee Image by Toshiyuki IMAI

I measure my mornings in cups of coffee.

The first one is for me. It accompanies breakfast, is savored as I read my Twitter feed and some interesting stories and helps me ease out of sleepiness into awakeness.

The second cup...

Read More...

Kubernetes Service Discovery

I am helping my client transition from a few large monoliths hosted on AWS to micro-services hosted on Kubernetes. It is my first experience with Kubernetes and I must say that I am impressed so far.

Of course, micro-services work best when it is easy...

Read More...

OpenID Connect and ID Tokens

OAuth2 is fundamentally an authorization protocol. It is not meant to be used for authentication. In general, OAuth2 based authorization services provide an end point that can be used to retrieve user profiles and identifiers. In some cases, they use...

Read More...

Signed JSON Web Tokens

Let’s continue using the analogies used in my last post and explore the JSON Web Tokens (JWT).

You hand over both your boarding pass and an identity document. The agent scans the boarding pass and examines the identity document to check it’s authenticity...

Read More...

Page 1 of 8

Next page