Rails / MySQL: знание номера версии для таблицы или всей схемы БД - PullRequest
0 голосов
/ 26 ноября 2009

В качестве конечной точки API мне нужно предоставить схему таблицы с номером версии, чтобы разработчики мобильных приложений, с которыми я работаю, могли кэшировать схему до тех пор, пока она снова не изменится.

Я автоматизирую этот процесс, что усложняет идею "контроля версий".

Сначала я подумал, что мог бы использовать последний номер миграции в качестве версии #, но мне пришло в голову, что миграции Rails теперь не последовательны, так что это будет означать, что мне нужно будет дать им все номера миграции, и они нужно решить, была ли новая миграция присутствующей, сравнивая массивы (может быть, это решение?)

Мне интересно, что я что-то упускаю - есть ли в Rails какой-либо другой номер версии схемы, кроме тех, которые хранятся в таблице миграции, или также есть ли способ отслеживания этого через mysql.

1 Ответ

0 голосов
/ 26 ноября 2009

Использование версии миграции может быть хорошей идеей. Если вы не хотите предоставлять полный список отсутствующих миграций, вы можете предоставить текущую версию схемы для быстрого сравнения, а затем предоставить полный список по второму запросу.

Список ожидающих миграций можно получить с помощью объекта ActiveRecord::Migrator.

migrations = ActiveRecord::Migrator.new(:up, 'db/migrate').pending_migrations
migrations.each do |migration|
  migration.version
end

А для текущей версии схемы.

schema  = File.read("#{RAILS_ROOT}/db/schema.rb")
version = ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, schema)
puts version
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...