2015-02-14 2 views
1

Я хочу использовать Heroku's scheduler для сброса базы данных один раз в день.Сбросить базу данных с помощью команды rake

Рекомендуется использовать задачи грабли для планировщика. Это то, что я пробовал:

task :reset_database => :environment do 
    `heroku pg:reset MY_DB:URL` 
    `heroku run rake db:migrate db:seed` 
    # some other ruby commands 
end 

Но как бы я сделать это правильно, потому что положить Heroku команды в обратные кавычки, которые с Баш normally works, здесь не работает:

No such file or directory - heroku

+0

Не могли бы вы рассказать мне о том, где вы разместили файл? –

ответ

2

Попробуйте эту задачу:

namespace :reset_database do 
    desc "Destroy all table entries." 
    task :all => :environment do 
    ActiveRecord::Base.connection.tables.each do |table| 
     if table != 'schema_migrations' 
     table.singularize.camelize.constantize.destroy_all 
     end 
     # Use this if you want to use the normal seeds: 
     # Rails.application.load_seed 

     # Use this if you want to run another rake task: 
     Rake::Task["foo:bar"].invoke 
    end 
    end 
end 
+0

К сожалению, метод 'load_seed' бесконечно меняет мои файлы семян. (Я использую этот код для файлов семян: http://stackoverflow.com/a/19872375/3205492) – Numbers

+1

Я изменил ответ, включив в него возможность запустить другую задачу рейка. Если у вас есть более сложная проблема, вам нужно создать новый вопрос со всем задействованным кодом. – wintermeyer

+0

Гений! Большое спасибо! Мне нужно было только выполнить другие задачи рейка за пределами каждого блока. – Numbers

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