Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📢 Announcement: aws-sdk-rails v4.2 modularization and aws-sdk-rails v5 upgrade information 📢 #165

Open
mullermp opened this issue Nov 17, 2024 · 2 comments

Comments

@mullermp
Copy link
Contributor

mullermp commented Nov 17, 2024

This is an announcement for the recent work that has been done on this gem and repository. The features in this gem have been modularized to reduce footprint and complexity. The following features have been modularized:

aws-sdk-rails 4.2

In aws-sdk-rails 4.2, the gems are included as dependencies and is intended to be backwards compatible. Many namespaces and classes have been "symlinked" and possibly throw warnings about changes that will be made in aws-sdk-rails 5. If there are incompatibilities, please open a new issue, and depending on severity, either a fix is published or a temporary monkey patch should suffice. Many warnings have been sprinkled throughout the code to help notify users of the migration effort.

If you are not ready to upgrade, please pin your version with gem 'aws-sdk-rails', '~> 4'. You may add these gems to your gemfile with aws-sdk-rails ~> 4 since they are pulled in anyway.

aws-sdk-rails 5

In aws-sdk-rails 5, you will need to selectively install the gems for the features you desire. Each gem has a published ~> 0 version. A new version ~> 1 will be published with these gems that contain improvements, breaking changes, and namespace/class renaming. Please use the ~> 0 versions when aws-sdk-rails 5 is released and upgrade to the 1.0.0 versions at your leisure (except in the case of aws-actionmailer-ses if you are using custom settings).

For all features, please add gem 'aws-sdk-rails', '~> 5' to your gemfile, as it still contains high level features such as Active Support Notifications, Encrypted Credentials, SQSD Middleware, etc.

Other than modularization, small changes for aws-sdk-rails are planned including removing Aws::Rails.instrument_sdk_operations and calling it automatically in a railtie.

DynamoDB Session Storage

Add gem 'aws-actiondispatch-dynamodb', '~> 0' to your Gemfile

In version 1.0.0 of this gem, the following changes will be made:

  • DynamoDB session storage is now configured with :dynamo_db_store.
  • Configuration files have been renamed to aws_dynamo_db_session_store instead of dynamo_db_session_store.

SES Action Mailbox

Add `gem 'aws-actionmailbox-ses', '~> 0' to your Gemfile

In version 1.0.0 of this gem, there are no planned changes right now.

In aws-sdk-rails 5, the following changes will be made:

  • Use require 'aws/action_mailbox/ses/rspec' instead of require 'aws/rails/action_mailbox/rspec'
  • Aws::Rails::ActionMailbox::RSpec has been moved to Aws::ActionMailbox::SES::RSpec

SES Action Mailers

Add gem 'aws-actionmailer-ses', '~> 0' to your Gemfile

In version 1.0.0 of this gem, the following changes will be made:

  • Configuration will be set in config.action_mailer.<mailer>_settings instead of calling Aws::Rails.add_action_mailer_delivery_method.

In aws-sdk-rails 5, the following changes will be made:

  • Aws::Rails::SesMailer has been moved to Aws::ActionMailer::SES::Mailer.
  • Aws::Rails::Sesv2Mailer has been moved to Aws::ActionMailer::SESV2::Mailer.
  • Aws::Rails.add_action_mailer_delivery_method will be removed. A Railtie will still add these configurations.
  • Aws::Rails::Mailer legacy will be removed.

SQS Active Job

Add gem 'aws-activejob-sqs', '~> 0' to your Gemfile

In version 1.0.0 of this gem, the following changes will be made:

  • More features and fixes to be determined. Existing issues and feature requests have been moved to the repository.

In aws-sdk-rails 5, the following changes will be made:

  • Aws::Rails::SqsActiveJob has been moved to Aws::ActiveJob::SQS
  • Aws::Rails::EbsSqsActiveJobMiddleware has been moved to Aws::Rails::Middleware::ElasticBeanstalkSQSD.
  • cron.yaml will require a path of root (/) when inferring Job names from task names. Otherwise, you can call jobs from whatever route cron.yaml is calling.

Aws::Record Generators

Add gem 'aws-record-rails', '~> 0' to your Gemfile

Additional scaffolding generators (model, view, controller) have been added in 0.1.0. No changes are planned to this gem unless there are new issues or feature requests.

Final thoughts

Thank you for reading through this and we appreciate your patience with any issues that may come up. We are not intending to make breaking changes outside of a major version. A lot of code shifted and changed namespaces, but I tried my best to keep compatibility where it made sense. Some API private modules have been moved and changed without this consideration, so hopefully there aren't many sharp edges here.

If you wish to opt-out of modularization for now, please pin your version to 4.1.0. What started simple, became a monolith. Hopefully this modularization improves your experience using these products.

As always, we welcome any new issues, pull requests, feature requests, etc.

Thank you!!

@cnorthwood
Copy link

for anyone else stumped and missing the typo, in the above comment it says aws-activejob-ses is the Gem to add for ActiveJob SQS support. It should instead by aws-activejob-sqs (ses vs sqs)

@mullermp
Copy link
Contributor Author

Oops. Fixed!

@mullermp mullermp pinned this issue Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants