0

Я пытаюсь скопировать всю мою производственную базу данных (то есть у меня в Mongo) в мою промежуточную среду. Поэтому я пытаюсь создать задачу. Сначала мне нужно подключиться к рабочей среде, чтобы иметь доступ ко всем моим моделям в производстве (Model.all.each ...) Но я не знаю, как воспроизводить производственную среду. Я знаю, что в консоли я могу «экспортировать RAILS_ENV = heroku_production», но я не знаю, как это сделать в Rake Task. Это то, что я пытаюсь сейчас, но это не работает, потому что я печатаю Rails.env и печатает «развитие» ... так что я немного потерялВоспроизводить производственную среду в Rake Task в Rails

namespace :db do 
    namespace :sync_production_staging do 
    desc "Copy production database to staging" 
    task :staging => :environment do 

     system "export RAILS_ENV=heroku_production" 

     ap Rails.env 

     ap User.all 
    end 
    end 
end 
+0

вы пытаетесь клонировать дб от Heroku к локальному? – MZaragoza

ответ

0

У меня есть сценарий, который скопирует мой базы данных от Heroku моего местного его действительно тесного вперед процесс, мне очень жаль, что это PG и не Монго, но я уверен, что это должно помочь

#lib/tasks/db.rake 
namespace :db do 
    desc "Import most recent database dump" 
    task :import_from_prod => :environment do 
    puts 'heroku run pg:backups capture --app sushi-prod' 
    restore_backup 'sushi-prod' 
    end 

    def path_to_heroku 
    ['/usr/local/heroku/bin/heroku', '/usr/local/bin/heroku'].detect {|path| File.exists?(path)} 
    end 

    def heroku(command, site) 
    `GEM_HOME='' BUNDLE_GEMFILE='' GEM_PATH='' RUBYOPT='' #{path_to_heroku} #{command} -a #{site}` 
    end 

    def restore_backup(site = 'sushi-prod') 
    dump_file = "#{Rails.root}/tmp/postgres.dump" 
    unless File.exists?(dump_file) 
     pgbackups_url = heroku('pg:backups public-url -q', site).chomp 
     puts "curl -o #{dump_file} #{pgbackups_url}" 
     system "curl -o #{dump_file} '#{pgbackups_url}'" 
    end 
    database_config = YAML.load(File.open("#{Rails.root}/config/database.yml")).with_indifferent_access 
    dev_db = database_config[Rails.env] 
    system "pg_restore -d #{dev_db[:database]} -C#{dump_file}".gsub(/\s+/,' ') 
    puts 
    puts "'rm #{dump_file}' to redownload postgres dump." 
    puts "Done!" 
    end 
end