Friday 26 October 2018

Create Dynamic CSV with custom data, Stored in tmp directory and upload to AWS S3 Bucket without any rails uploder method.

1. Add gem "aws-sdk-s3" and bundle install
 
  require 'aws-sdk-s3'
  # AWS S3 bucket upload method
  def self.upload_csv_to_s3_bucket
    s3 = Aws::S3::Resource.new(region: REGION_S3, access_key_id: ACCESS_KEY_ID_S3, secret_access_key: SECRECT_ACCESS_KEY_S3)
    file = "#{Rails.root}/tmp/file_name_#{Date.today}.csv"
    name = File.basename(file)
    bucket = BUCKET_S3
    obj = s3.bucket(bucket).object(name)
    metadata = {"answer" => "42"}
    obj.upload_file(file, metadata: metadata)
    # this below line of code used to print file name and S3 File ULR
    bucket = s3.bucket(bucket)
    bucket.objects.limit(50).each do |item|
      puts "Name:  #{item.key}"
      puts "URL:   #{item.presigned_url(:get)}"
    end
  end
 
  def self.csv_generate(header, total_with_times, account_id, file_name)
    begin
    result = CSV.generate(headers: true) do |csv|
      csv << header
      total_with_times.each do |val|
        csv << val
      end
    end
    # Delete old CSV file for creating new one
    File.delete("#{Rails.root}/tmp/#{ file_name }_#{ Date.today - 1.days }.csv") rescue ''
    # Creating new CSV file for all accounts
    File.open("#{Rails.root}/tmp/#{ file_name }_#{ Date.today }.csv", 'w:UTF-8') { |file| file.write(result)}
    upload_csv_to_s3_bucket
  rescue Exception => e
    puts "<<<>>>>>> | #{e.message}| <<<<<<<>>>>>"
  end
  

2 comments:

  1. very informative blog and useful article thank you for sharing with us , keep posting learn more Ruby on Rails Online Course India

    ReplyDelete
  2. Why launch an offshore development center in Ukraine? Here's everything you need to know about offshore center setup

    ReplyDelete

Revert last commit or second last and more....

 Git revert commit_id -m 1 this command willl revert last commit  Git revert commit_id -m 2 this command will revert second commit with same...