Я создавал приложение с использованием Ruby on Rails для Windows почти два года, и оно у меня было. В эти выходные я начал переносить свою среду разработки на Ubuntu, потому что она может запускать некоторые инструменты/службы, недоступные в Windows.
Я попытался запустить миграцию и получил сообщение об ошибке:
$ bundle exec rake db:migrate
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:
class AddAttachmentImportCsvFileToTabClientProjectCommunities < ActiveRecord::Migration[4.2]
/home/joe/.rvm/gems/ruby-2.3.3/gems/activerecord-5.1.6/lib/active_record/migration.rb:525:in `inherited'
/home/joe/workspace/asb_base/db/migrate/20170829235908_add_attachment_import_csv_file_to_tab_client_project_communities.rb:1:in `<top (required)>'
Сначала я попробовал предложение из сообщения об ошибке и явно объявил версию Rails в сценарии миграции. Я использовал ActiveRecord::Migration[4.2]
, так как это было в сообщении об ошибке, а затем я попробовал ActiveRecord::Migration[5.1]
, так как это была версия Rails, с которой изначально была написана миграция; ни один не работал в Ubuntu.
Я подумал, может быть, это из-за того, что версия RoR, которая была у меня в Ubuntu (Ruby 2.5.1/Rails 5.2.0), отличалась от версии в Windows (v2.3.3/v5.1.4). Я явно заблокировал свои версии RoR, чтобы использовать то, что у меня было в Windows, а затем запустил миграцию - все та же ошибка msg.
Чего я не понимаю, так это почему rake считает, что рассматриваемый сценарий миграции был написан с использованием Rails v4.x. Даже самый ранний исходный код, который я написал (даже до этого), использовал Rails v5.x. Поиск в Google не дает мне твердых, полезных ответов - кто-нибудь уже решал эту проблему?