Rails: лучшая практика для обработки данных разработки - PullRequest
2 голосов
/ 14 октября 2011

У меня есть следующий сценарий:

Я начинаю разработку длинного проекта (около 6 месяцев), и мне нужно иметь некоторую информацию о базе данных, чтобы протестировать свои функции. Проблема в том, что сейчас у меня нет форм для вставки этой информации (я буду в будущем), но мне нужна информация, загруженная в БД, как лучше всего справиться с этим? Особенно если учесть, что после завершения приложения этот процесс мне больше не понадобится.

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

Кстати, я работаю с Rails 3.1.

Заранее спасибо!

Редактировать

О семенах. Мне сказали, что семечки - это не тот путь, если ваши данные могут немного отличаться, так как вам придется удалить всю информацию и заново вставить ее. Скажи ... Я хочу изменить или добавить категории, тогда мне нужно будет отредактировать файл seed.rb, внести изменения, а затем удалить и перезагрузить все данные ...., есть ли другой способ? Или семена действительно лучший способ решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

Похоже, вы будете добавлять, изменять или удалять данные по пути, который будет смешиваться с другими данными. Итак, seed.rb отсутствует. Вам нужно использовать migrations . Таким образом, вы можете искать и идентифицировать данные, которые вы хотите изменить, с помощью последовательного процесса, для которого миграции предназначены именно для этого. В противном случае, я думаю, что вам лучше всего изменить данные вручную через консоль rails.

РЕДАКТИРОВАТЬ: хороший пример будет следующим.

Вы используете Capistrano для управления развертыванием. Вы хотите добавить новую категорию «Игрушки» в свою систему. Затем в файле миграции вы бы добавили Category.create(:name => "Toys") или что-то похожее в вашу функцию миграции (я забыл, как это теперь называется в Rails 3.1, хотя я знаю, что есть только один метод), запустите rake db:migrate локально, протестируйте свои изменения, зафиксируйте их, затем, если это приемлемо, разверните его, используя cap:deploy, и это запустит новую миграцию для вашей производственной базы данных, вставьте новую категорию и сделайте ее доступной для использования в развернутом приложении.

Этот пример в стороне, он действительно зависит от вашего рабочего процесса. Если вы считаете, что добавление новых данных с помощью миграции не повлияет на ваше приложение, сделайте это. Я скажу, что DHH (David Heinemeier Hansson) не является его поклонником, поскольку он использует его строго для изменения структуры базы данных с течением времени. Если вы не знали, DHH является создателем Rails.

РЕДАКТИРОВАТЬ 2: У меня только что возникла мысль, которая позволила бы вам отказаться от использования миграций, если вам это не нравится. Вы можете на 100% полагаться на файл db / seeds.rb. Когда вы думаете о "seed.rb", вы думаете о создании информации, но это не обязательно должно иметь место. Вместо того, чтобы просто слепо создавать данные, вы можете проверить, существуют ли соответствующие данные, и если они существуют, то измените и сохраните их, но если они не существуют, просто создайте новую запись просто и ясно.

дб / seeds.rb

toys = Category.find_by_name("Toys")
if toys then
  toys.name = "More Toys"
  toys.save
else
  Category.create(:name => "More Toys")
end

Запустите rake db:seeds, и этот код запустится. Вам просто нужно постоянно обновлять файл seed.rb каждый раз, когда вы меняете свои данные, так что 1) он ищет правильное значение данных и 2) обновляет правильные атрибуты.

В конце концов, нет правильного или неправильного способа сделать это, это просто то, что работает для вас и вашего рабочего процесса.

0 голосов
/ 14 октября 2011

есть файл с именем db / seed.rb

вы можете создавать записи, используя его

user1=User.create(:email=>"user@test.com", 
  :first_name=>"user", 
  :last_name=>"name", 
  :bio=>"User bio...", 
  :website=>"http://www.website.com", 
  :occupation=>"WebDeveloper",
  :password=>"changeme", 
  :password_confirmation=>"changeme", 
  :avatar => File.open(File.join(Rails.root, '/app/assets/images/profiles/image.png'))
  )
user2=User.create(:email=>"user2@test.com", 
  :first_name=>"user2", 
  :last_name=>"name2", 
  :bio=>"User2 bio...", 
  :website=>"http://www.website.com", 
  :occupation=>"WebDeveloper",
  :password=>"changeme", 
  :password_confirmation=>"changeme", 
  :avatar => File.open(File.join(Rails.root, '/app/assets/images/profiles/image.png'))
  )

Просто запустите rake db:seed из командной строки, чтобы получить его в БД

0 голосов
/ 14 октября 2011

Место для загрузки данных разработки - db/seeds.rb. Так как вы можете написать там произвольный код Ruby, вы можете даже загрузить свои данные dev, например, из внешних файлов.

...