El problema aquí es que el adaptador de base de datos Rails Mysql2 se bloquea cuando hay varios comandos SQL dentro del mismo bloque de ejecución. Lo siguiente funcionará bien:
execute <<-SQL
ALTER TABLE properties
ADD name VARCHAR(255) NOT NULL;
SQL
execute <<-SQL
ALTER TABLE properties
ADD CONSTRAINT fk_properties_name
FOREIGN KEY (name)
REFERENCES valid_property_names (property_name);
SQL
Este comportamiento puede confundirlo si viene de usar PostgreSQL con Rails, ya que el adaptador de Postgres no tiene la misma limitación.