I ended up doing this thing:
Which is adding (and allowing the removal of) a column from within the plugin (using this format to add and remove tables would be certainly possible as well).
The removal bit’s pretty manual atm, but maybe the registry you mention could handle removing related tables if the plugin is taken out of app.yml [it would be bad to wipe the database of all the plugin’s data just because the admin deactivated it] EDIT: No wait erasing data like that is probably a real nasty side effect and it probably wouldn’t be the worst thing in the world to have an orphan table or column that you could get rid of with a little work.
Code that might be cool to write:
# plugin.rb
register_plugin_table :my_plugin, :wingbats do |t|
# this block is passed through to create_table
t.integer :id
t.timestamps
end
register_plugin_column :my_plugin, :post_custom_fields, :my_column, :jsonb, options: {
default: {},
index: true
}