В направляющих миграции имеют a down
метод по умолчанию для возвращения миграции. В каком сценарии я когда-либо хотел бы вернуться миграция, хотя?
Есть ли в разработке или производстве, у меня всегда снимок моей базы данных для возвращения к, прежде чем я даже выполню миграции. Специально для миграций, которые выполняют преобразование данных, я нахожу в большинстве случаев, что, возвращаясь снимок еще быстрее, чем возвращение миграции. (Таким образом, я никогда не делал бы этого в порыве!)
Если миграция должна была перестать работать, она была бы также:
Если бы внесенные изменения работают (или поздно в разработке) и позже оказываются ошибкой, я зафиксировал бы свою ошибку в новой миграции. Я не вернулся бы старый. В разработке я просто удалил бы миграцию.
Я также нахожу, что вниз метод представляет дополнительный код, в котором я повторяю меня и таким образом могу представить новые ошибки. Это против принципа DRY.
Таким образом, мне любопытно на предмет профессионалов, потому что я не могу думать ни о ком.
Ваша программа должна иметь такую структуру:
read number x
repeat this x times
print '!'
В заявлении нет ничего, что требовало бы от вас построить последовательность, насколько я могу судить.
-121--343739-Я думаю, что униформа является лучшим решением для форм. Html хорошо и понятно, он имеет кучу хитроумных форм примеры решены очень красиво объявления он обращает внимание на удобство использования гораздо больше, чем другие рамки.
Другие, похоже, настаивают скорее на вертикальном типографском ритме, чем на здравом смысле и удобстве использования.:)
-121--3176776-При разработке легко и быстро постепенно «улучшать» миграции с помощью автоматического метода down. Например,
Ваш метод создания снимков хорошо работает. Но рельсы включают тот же эффект автомагиозно, используя методы миграции «вниз». Работает со всеми БД, на вкус отлично
Добавлено:
Для производства я согласен с тем, что миграция вниз не нужна. Но иногда случаются ошибки и нужно откатываться. Путь миграции вниз дает вам первую и быструю возможность исправить ситуацию в аварийной ситуации во время модернизации, которое идет не так.
- гораздо быстрее выполнить миграцию вниз в чрезвычайной ситуации, чем восстановить базу данных с помощью контрольной точки.
Если миграция не дала ожидаемого результата, лучше откатиться и переписать ее, чем оставить неудачную миграцию в код.
Миграция "вниз", используемая для откатов БД, выполняется, поэтому каждое действие имеет равное и противоположное действие. Это снимает с разработчика ответственность за поддержку моментальных снимков базы данных и позволяет им использовать код для достижения тех же целей. Как сказал Ларри К., они хороши для таких ситуаций:
Теперь, если у вас 10 или 15 миграций, проще просто написать новый, вместо того, чтобы потерять все разработчики. данные в новых таблицах / столбцах, выполнив откат. Однако, если вы только что написали эту миграцию, она будет чище и менее загромождена откатом, изменением миграции и повторным запуском.
Другая чрезвычайно полезная функция откатов заключается в следующем:
Идея запуска миграции вниз на производстве приводит меня в ужас. Раньше, когда предпочтительным способом отката всех миграций был rake db:migrate VERSION=0
, я постоянно делал это в разработке. Однако потом у меня появилась паранойя, что из-за того, что это закрепилось в мышечной памяти, я могу случайно напечатать это на рабочем сервере, когда я хотел просто выполнить миграцию.
Из-за этой паранойи я добавил следующее ко всем своим методам удаления.
def self.down
if Rails.env.production?
raise ActiveRecord::IrreversibleMigration
else
drop_table :foo_bars
end
end
Таким образом, он все еще работает в разработке, но я не могу случайно взорвать свою производственную базу данных с орбиты, когда полусплю в два часа ночи.