簡體   English   中英

Heroku Rake任務未運行Shell腳本

[英]Heroku Rake task not running shell script

我有在本地工作的Rake任務:

namespace :backup_to_s3 do
  task run: :environment do
    puts "Started S3 backup"
    # create .pgpass so we don't have to enter the password
    entry = "#{ENV['RDS_DB_HOSTNAME']}:*:*:#{ENV['RDS_DB_SUPER_USERNAME']}:#{ENV['RDS_DB_SUPER_PASSWORD']}"
    `echo '#{entry}' > ~/.pgpass;
    chmod 0600 ~/.pgpass;
    bash backup_to_s3.sh`
    puts "Finished S3 backup"
  end
end

請注意,它會調用以運行Shell腳本。 這是shell腳本:

#!/bin/bash

backupTime=`date +%Y%m%d-%H:%M`
S3Bucket=$S3_BUCKET_NAME
RDSHostname=$RDS_DB_HOSTNAME
RDSUsername=$RDS_DB_SUPER_USERNAME
RDSDatabaseName=$RDS_DB_NAME

pg_dump -Fc ${RDSDatabaseName} -h ${RDSHostname} -U ${RDSUsername} --no-password | gzip -9 | \
s3cmd put - s3://${S3Bucket}/postgres.${RDSDatabaseName}.dump.${backupTime}.gz

就像我說的那樣,這一切都在本地工作,而puts日志語句也可以工作。 在Heroku上,任務運行,但是puts語句立即執行,似乎表明系統調用和shell腳本未在運行。

我很困惑為什么這不起作用!

更新7/15

我發現您可以設置PGPASSWORD環境變量,並避免創建.pgpass文件。 Rake任務仍未執行Shell腳本。

Heroku沒有為您提供傳統的虛擬專用服務器,因此我不認為您有權寫入主目錄。 創建.pgpass文件時,很可能會收到拒絕權限的錯誤。

嘗試將文件放置在rails項目的相對tmp/目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM