2010-09-23 2 views
5

Я видел некоторые приложения, в которых есть несколько задач рейка, включенных для загрузки данных. Я не говорю о семенных данных, я знаю о db/seeds.rb, вместо этого я имею в виду такие данные, как пользователи по умолчанию и базовые записи, которые помогают мне заполнить мое приложение чем-то, на что можно посмотреть. Я не хочу использовать DB: приборы: нагрузки, потому что у меня нет никакого контроля над этим ...Rake task для добавления данных по умолчанию

Я хотел бы иметь задачи грабли, как это:

rake myapp:data:delete 
rake myapp:data:load 
rake myapp:data:reload 

Где «удалить «Команда rake удалит все данные, которые я укажу в задаче rake, приложение« load »загрузит данные по умолчанию из задачи в приложение, а задача« перезагрузить »удалит все данные, а затем загрузит их в приложение. Как мне сделать что-то подобное?

Если бы вы могли дать мне пример, где у меня есть модель с именем «Контакт» и несколько полей - в основном, как добавлять или удалять данные из этих полей в грабли, я ДЕЙСТВИТЕЛЬНО оценил бы это!

Как раз для того, чтобы дать вам представление, я бы в основном использовал эти задачи с граблями, когда перехожу с одного компьютера на другой, чтобы сделать развитие. Я не хочу вручную вводить записи по умолчанию (например, мой пользователь для входа в систему), поэтому я мог бы просто сделать rake myapp: data: reload - это будет после rake db: schema: load

Спасибо,

BN

ответ

7

Создать файл Библиотека/задач/data.rake и написать следующий код:

require File.join(File.dirname(__FILE__), '../../config/environment') 
require 'database_cleaner' 

namespace :myapp do 
    namespace :data do 

    task :delete do 
     DatabaseCleaner.strategy = :truncation 
     DatabaseCleaner.clean 
    end 

    task :load do 
     require 'db/data.rb' 
    end 

    task :reload do 
     Rake::Task['myapp:data:delete'].invoke 
     Rake::Task['myapp:data:load'].invoke 
    end 

    end 
end 

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

sudo gem install database_cleaner 

Теперь rake myapp:data:load в основном загрузки данных из файла под названием db/data.rb. Вы могли бы назвать это чем угодно, если бы вы использовали имя файла в задаче rake, или вы могли бы использовать более одного файла, если хотите ... Итак, создайте файл db/data.rb и поместите весь код, который вам нужен ...

User.create(...) 
+0

Спасибо за быстрый ответ! Я сделал точно так, как вы сказали, но по какой-то причине он не находит файл db/data.rb. Вот ошибка, которую я получаю: – dingalingchickenwiing

+0

rake aborted! нет такого файла для загрузки - db/data.rb (Смотрите полный след, выполнив задачу с помощью --trace) 10 bash $ – dingalingchickenwiing

+0

Я пробовал все ... Он не найдет ../db/data.rb , ../../db/data.rb или db/data.rb - Мне не повезло. Пожалуйста помоги. :( – dingalingchickenwiing