2015-10-27 4 views
0

Я пытаюсь сбросить свою базу данных.Rails Heroku - Сброс базы данных

Не работает локально или в герою.

Я succuessfully побежал каждой из этих команд:

1. rake db:drop 
2. rake db:create 
3. rake db:migrate 

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

тогда я пытаюсь сбросить свою базу данных с:

4. rake db:reset 

Я получаю эту ошибку:

initialize_schema_migrations_table() 
    -> 0.0031s 
rake aborted! 
NoMethodError: undefined method `name=' for #<University:0x007fc288bdcca0> 
/app/vendor/bundle/ruby/2.2.0/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:in `method_missing' 

Я не могу найти где-нибудь в базе кода, который имеет метод, называемый «имя» для университета. Я запускаю поиски, ища университетское имя и имя возле университета.

Я обновил свои драгоценные камни и запустил установку пакета.

Что означает это сообщение об ошибке?

Когда я пытаюсь:

rake db:reset --trace 

я получаю: ** Выполнить дб: abort_if_pending_migrations рейка прервана! NoMethodError: неопределенный метод name=' for #<University:0x007f9a1b24da30> /Users/em/.rvm/gems/ruby-2.2.2/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:in method_missing»

Я бежал все миграции и обновленные грабли БД: мигрировать

+0

Не могли бы вы разместить свой schema.rb? – sonalkr132

+0

Любой конкретный бит? его действительно большой – Mel

+0

@ user2860931, была ли ваша проблема решена? – jeffdill2

ответ

0

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

class Foo  
    attr_reader :bar 

    def initialize 
    @bar = 1 
    end 
end 

> f = foo.new 
=> #<Foo:0xa22ef0c @bar=1> 
> f.bar 
=> 1 
> f.bar = 2 
NoMethodError: undefined method `bar=' for #<Foo:0xa22ef0c @bar=1> 
    from (irb):23 
    from /usr/local/rvm/rubies/ruby-2.1.3/bin/irb:11:in `<main>' 
+0

Hi Spiderbites. Не совсем уверен, как это связано с моей текущей проблемой.Я пытаюсь понять, почему я могу успешно удалить, создать и перенести db, но я не могу сбросить его из-за ошибки этого метода. Я не знаю, что означает сообщение об ошибке в моем случае, или что это значит в вашем (у меня нет никаких объявлений attr_reader/writer в моем приложении - это могут быть старые школьные рельсы) – Mel

+0

well db: reset запускает db : задание настройки, которое создаст базу данных, загрузит схему и инициализирует ее семенными данными, так что это делает больше, чем просто отбрасывать, создавать и переносить. http://jacopretorius.net/2014/02/all-rails-db -rake-tasks-and-what-they-do.html – spiderbites

+0

Спасибо - я забыл проверить файл семени, в котором были старые атрибуты. Я удалил это и запустил его. Большое спасибо. – Mel

0

Похоже, у вас есть что-то в файле seeds.rb вызывает ошибку.

Причина, по которой вы видите проблему при запуске rake db:reset, но не при запуске этих трех отдельных шагов, потому что rake db:reset не запускает эти 3 отдельных шага.

rake db:reset будет работать следующим образом:

rake db:drop 
rake db:setup 

и впоследствии, rake db:setup будут работать эти:

rake db:create 
rake db:schema:load 
rake db:seed 

Если вы только хотите сделать начальные 3 шага (rake db:drop, rake db:create, rake db:migrate), вы можете запустить это вместо:

rake db:migrate:reset 
Смежные вопросы