0

私のすべての本番データベース(Mongoにある)を私のステージング環境にコピーしようとしています。だから私は仕事を作ろうとしている。まず、プロダクション環境のすべてのモデルにアクセスできるようにするには、プロダクション環境に接続する必要があります(Model.all.each ...)。しかし、プロダクション環境を再現する方法はわかりません。私はコンソールでRAILS_ENV = heroku_productionをエクスポートすることができますが、私はRakeタスクの中でそれをやる方法を知らないのです。これは私が今のところしようとしているものですが、私はRails.envを印刷し、それが「開発」を出力しますので、それは動作しません...ので、私ビットがRakeタスクの生産環境を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

助けるべきであると確信していますか? – MZaragoza

答えて

0

を失ったんだ、私はコピーが私のスクリプトを持っています私の地元その本当に海峡フォワード処理にHerokuのからデータベース、私はこれがPGであることを申し訳なく思っやモンゴませんが、私はこれはあなたの地元にHerokuのからあなたのデシベルのクローンを作成しようとしている

#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 
関連する問題