namespace :db do
desc "reborn database" task :fuck do begin Rake::Task['db:environment:set'].invoke('RAILS_ENV=development') Rake::Task['db:drop'].invoke rescue Exception => e p e.message end Rake::Task['db:create'].invoke Rake::Task['db:migrate'].invoke Rake::Task['db:seed'].invoke # страны города тоже в посев Rake::Task['geodata:cc'].invoke end
end
namespace :geodata do
desc "countries cities deploy" task :cc do `mysqlimport -u#{CONFIG[:db][:login]} -p#{CONFIG[:db][:pass]} --local --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='\n' #{CONFIG[:db][:name]} '#{Rails.root}/geodata/countries.csv'` `mysqlimport -u#{CONFIG[:db][:login]} -p#{CONFIG[:db][:pass]} --local --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='\n' #{CONFIG[:db][:name]} '#{Rails.root}/geodata/cities.csv'` end
end
namespace :cap do
desc 'корректирование конфигурационных файлов для деплоя' task :conf_update do # загрузка конфига в полноценный символьный хэш require 'active_support/core_ext/hash' CAP_CONFIG = YAML.load_file(File.expand_path('config/capistrano.yml', Rails.root)).with_indifferent_access # получение девственных файлов CAP_CONFIG[:sh][:files].each do |filename| # получение девственных файлов sh "cp #{CAP_CONFIG[:sh][:virgin_dir]}#{filename} #{CAP_CONFIG[:conf][:dir]}" path = "#{CAP_CONFIG[:conf][:dir]}#{filename}" if File.exist? path f = open(path, 'r+') str = f.read # замена переменных на реальные значения CAP_CONFIG[:conf][:vars].each do |variable, value| str.gsub! Regexp.new(variable, Regexp::MULTILINE), value end # теперь ты опустошитель, брат f.truncate 0 # перемотка f.rewind # запись f.write str f.close else err path end end CAP_CONFIG[:conf][:files].each do |k, filename| # получение девственных файлов sh "cp #{CAP_CONFIG[:conf][:virgin_dir]}#{filename} #{CAP_CONFIG[:conf][:dir]}#{filename}" path = "#{CAP_CONFIG[:conf][:dir]}#{filename}" if File.exist? path f = open(path, 'r+') str = f.read # замена переменных на реальные значения CAP_CONFIG[:conf][:vars].each do |variable, value| str.gsub! Regexp.new(variable, Regexp::MULTILINE), value end # теперь ты опустошитель, брат f.truncate 0 # перемотка f.rewind # запись f.write str f.close else err path end end end
end