2013-02-11 3 views
1

Несколько дней назад я создал миграцию для рельсов, чтобы добавить аватары Paperclip, но в конечном итоге пошел в другом направлении. Будучи новичком в Rails, я не знал, насколько плохо из-за идеи удалить файл миграции, как я.Удаленные миграции и Heroku

Мое приложение работает отлично локально, но при запуске heroku run rake db:migrate я получаю это:

undefined method `attachment' for #<ActiveRecord::ConnectionAdapters::Table:0x000000046092e0> 

Это потому, что он пытается запустить миграцию под названием AddAttachmentAvatarToVenues, которая является миграция я тупо удален.

Он также добавлял столбцы для аватаров, которые были указаны в удаленной миграции, в schema.rb, но я создал новую миграцию, чтобы избавиться от них. Новая миграция избавилась от них, но не изменила ошибку миграции герою.

Любая идея, как это исправить? Я много раз искал и смотрел вокруг, и в то время как у многих людей с подобными ошибками в основном возникают проблемы с командами, которые они используют.

Вот результат после попытки удаленной миграции в моей миграции heroku.

== AddAttachmentAvatarToVenues: migrating ==================================== 
-- change_table(:venues) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

undefined method `attachment' for #<ActiveRecord::ConnectionAdapters::Table:0x00000003bdb7c8> 
/app/db/migrate/20130206222434_add_attachment_avatar_to_venues.rb:4:in `block in up' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/schema_statements.rb:243:in `change_table' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:466:in `block in method_missing' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:438:in `block in say_with_time' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:438:in `say_with_time' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:458:in `method_missing' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:334:in `method_missing' 
/app/db/migrate/20130206222434_add_attachment_avatar_to_venues.rb:3:in `up' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:370:in `up' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:410:in `block (2 levels) in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:410:in `block in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in `with_connection' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:389:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:528:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:720:in `block (2 levels) in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:775:in `call' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:775:in `block in ddl_transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/transactions.rb:208:in `transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:775:in `ddl_transaction' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:719:in `block in migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:700:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:700:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:570:in `up' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/migration.rb:551:in `migrate' 
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/railties/databases.rake:179:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

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

EDIT: Вот некоторые скриншоты структуры файла:

git

(Два с аналогичным названием из них, потому что была колонка я забыл удалить, но это было после того, как я с этой проблемой и Бесполезный «т влияют на это в любом случае)

structure

EDIT2:

Вот удаленная миграция из моей истории git. После этого я добавил еще несколько каналов. Это всего лишь пара строк, но если бы это могло изменить ситуацию, я найду более новую версию.

class AddAttachmentAvatarToVenues < ActiveRecord::Migration 
    def self.up 
    change_table :venues do |t| 
     t.attachment :avatar 
    end 
    end 

    def self.down 
    drop_attached_file :venues, :avatar 
    end 
end 

Заранее благодарен!

+0

можете ли вы показать миграцию? –

+0

В этом проблема, я удалил ее из папки моих миграций, и я не уверен, откуда она будет. – Jason

+0

его не здесь? /app/db/migrate/20130206222434_add_attachment_avatar_to_venues.rb –

ответ

2

Может быть, вы должны смотреть на это: How to empty DB in heroku

Все ваши обычные команды также доступны в Heroku, единственное отличие состоит в том, что вы должны поставить Heroku бежать перед ним.

Если ваше приложение не пошел жить еще можно просто сбросить базу данных:

heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP 

И воссоздать его, используя:

heroku run rake db:migrate 

Для заполнения базы данных:

heroku run rake db:seed 

И, наконец, для перезапуска Heroku:

heroku restart 

P.S. Если эти шаги не помогут, вы можете попробовать запустить «heroku run rake db: setup» после удаления базы данных

+0

Спасибо за помощь, к сожалению, когда я это сделал, «AddAttachmentAvatarToVenues: migrating» все еще пытался и прервался, в результате чего остальные мои миграции прекратились, как и раньше. – Jason

+0

Вы можете попробовать: heroku run rake db: rollback. Таким образом, ваши миграции возвращаются к началу. Затем вы можете создать миграцию AddAttachmentAvatarToVenues с желаемыми атрибутами. Наконец, вы можете запускать rakbkk rak dk: migrate again. –

+0

Альтернатива: git rm [migration_number] _create_users.rb git push heroku master heroku run rake db: drop => heroku run rake db: create => heroku run rake db: migrate, см: http://stackoverflow.com/questions/ 11023645/Heroku-вводного рейк-dbmigrate ошибок –

Смежные вопросы