Repository navigation
Add types for actionmailbox v8.1 - #1095
Conversation
|
@amatsuda Thanks for your contribution! Please follow the instructions below for each change. Available commandsYou can use the following commands by commenting on this PR.
|
There was a problem hiding this comment.
This file contains the names mechanically assigned to reviewers, as well as an indication of the intention to conduct a review, the declaration of which is left up to the individual.
I have the intention to review, but I do not know about others.
There was a problem hiding this comment.
So, what shall I do? Should I better remove others in order for this patch to get merged?
As a Rails committer, I personally feel like Rails is just Rails. Technically, everyone in the team maintains Action Mailbox thing, although I don't actually know anything about it at all. Thus, to me it feels natural to add everyone who are willing to maintain Rails to all Rails components' reviewers. I mean, that's just what I thought when I created this file, but of course I'll follow your team's policy and decision.
There was a problem hiding this comment.
Please delete the file or make sure to list only your own name.
Basically, the only name you should write in _reviewers.yaml is your own.
Example: #580
I apologize for the confusion, but this is a mechanism for the entire gem_rbs_collection rather than a specific Rails rule.
We haven't received requests to add users other than oneself until now, so the documentation might need to be updated.
https://github.com/ruby/gem_rbs_collection/blob/main/docs/CONTRIBUTING.md#gem-reviewer
There was a problem hiding this comment.
OMG! RTFM!!! Just updated the reviewers to be "only me" 🙇
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Generated with `rbs prototype rb` from the actionmailbox 8.1.4 lib and app sources and post-processed the same way as the other Rails 8.1 gems: drop members already defined elsewhere, fill missing type arguments, add accessors defined with class_attribute, mattr_accessor, and cattr_accessor and methods defined with delegate, generate the methods defined inside `class_methods do ... end` as the concern's ClassMethods, and make the classes extend the ClassMethods of the concerns they include. The namespaces that Zeitwerk defines for the controllers in app (ActionMailbox::Ingresses::Mailgun, Rails::Conductor, ...) are declared as modules. The generators in lib/generators and lib/rails are left out, as their superclasses come from railties, which actionmailbox doesn't depend on. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…Email They're defined by the action_mailbox_inbound_emails table, enum, and has_one_attached, which rbs prototype doesn't see, and the model is in the gem, so apps' generated model signatures don't have them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A mailbox's inbound_email and mail, and InboundEmail's mail, source, and processed?. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
rbs prototype marks a block as required unless the method checks it. before_processing, after_processing, and around_processing take method names, and create_inbound_email_from_mail and receive_inbound_email_from_mail pass the block to Mail.new, which builds the mail from the keyword arguments without one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
994fde8 to
7888c8f
Compare
|
/merge |

Adds signatures for actionmailbox 8.1, based on 8.1.4. This is a new gem in this repository.
This PR is stacked on #1093 (activestorage 8.1), which is stacked on #1090 (activejob 8.1), because actionmailbox 8.1 needs their signatures. Until they are merged, their commits show up here too. The commits for this PR are the ones starting with
actionmailbox:.The reviewers are the same as activerecord's, and actionmailbox is added to the target gems listed in the README of the Rails gems. The RuboCop config enables the strict cops.
How it is made
actionmailbox-generated.rbscomes fromrbs prototype rbrun onlibandapp, then post-processed the same way as the other Rails 8.1 gems:untypedclass_attribute,mattr_accessor, andcattr_accessor, and methods defined withdelegateclass_methods do ... endas the concern'sClassMethods, whichrbs prototypeskips, so mailboxes haveroutingandbefore_processingClassMethodsof the concerns they include, directly or through other concerns, asActiveSupport::Concerndoesapp(ActionMailbox::Ingresses::Mailgun,Rails::Conductor, ...)The generators in
lib/generatorsandlib/railsare left out, since their superclasses come from railties, which actionmailbox doesn't depend on.Methods the generator doesn't see
The columns of
ActionMailbox::InboundEmail(status,message_id, ...), the methods of itsstatusenum (delivered?,bounced!, ...), and itsraw_emailattachment. The model is in the gem, so apps' generated model signatures don't have them.Return types
A mailbox's
inbound_emailandmail, andInboundEmail#mail,source, andprocessed?.Optional blocks
All required blocks were checked against the source, and 5 were made optional:
before_processing,after_processing, andaround_processingwith method names, andcreate_inbound_email_from_mailandreceive_inbound_email_from_mail, which build the mail from keyword arguments without one.Tests
Each commit that changes types adds tests that fail without it.
bin/test gems/actionmailbox/8.1and RuboCop's strict cops pass on every commit from the generation commit onward.🤖 Generated with Claude Code