RAMP is a system for pushing portions of one server’s content to another. Data comparisons are done in the context of the server that is doing the comparison. Content is evaluated based on what can be sent. New content on the destination server is not considered during a comparison. Content that contains modification dates as part of its data structure is compared based on creation and modification dates. Date based content is WordPress post-types (pages, posts, custom post types) and menu-items. All other items receive complete comparisons based on a unique identifier that changes based on the content type.
After selecting a portion of content to send to the destination server the data must pass through a preflight phase in which it is inspected with more scrutiny. If any warnings or errors show up during preflight the data cannot be transferred. Preflight will give details in the warning and error messages. Once the issues are fixed the content can be sent.
After sending content the content can be rolled back on the destination server. Only the server that received the information can roll back a batch. This is considered an emergency button in the event that something isn’t right after the batch data is imported by the destination server. After the content has been on the destination server for a while the initiation of a rollback can be detrimental to other content that has since been added to the server. In such a case it is more likely that you’ll have better luck fixing the issue directly than to roll back the last batch and potentially delete or move data that is depended upon by other items on the server.
RAMP: An Act In Three Parts
Imagine the following conversation happens at each major stage of the RAMP process. It may help gain an understanding of how the system has been architected.
- Staging: Production, here is some data that might be relevant. Please tell me if any of it is different from what you have. (comparison_send)
- Production: Staging, here is everything I know about the data you sent compared to the data I have. (comparison_check)
- Staging: User, here is a list of the data differences between staging and production, please choose the ones you care about. (comparison_selection_row)
- Staging: Production, here is the data the user selected. Please confirm for me how it is different from what you have, and make sure everything looks sane. (preflight_send)
- Production: Staging, here are the results of the comparison you asked for. (preflight_check)
- Staging: User, here is what the deploy is going to do, or what the errors are if there are any. (preflight_display)
- Staging: Production, here is some data that you need to import. Let me know if it works or not. (send)
- Production: Staging, here are the results of the import I tried to do. (receive)