ruby スクリプトを使用して、s3 にアップロードする html ページを生成しています。Amazon バケットは静的 Web サイトとして機能するように構成されており、スクリプトが生成する html ページはインデックス ページです。
フォグ ジェムを使用して s3 への接続を構築し、html ページを生成してから s3 にプッシュするモデルをいくつか作成しました。
スクリプトを使用してファイルを s3 にプッシュすると、エラーは発生しませんが、ファイルの半分しかアップロードされません。ファイルサイズに関係なく発生します。必然的に、生成した html テーブルから約 15 行が失われます。
私の FogManager モデルの関連コードは次のとおりです。
def connect
@connection = Fog::Storage.new({
provider: 'AWS',
aws_access_key_id: AWS_ACCESS_KEY,
aws_secret_access_key: AWS_SECRET_KEY,
persistent: true
})
end
def locate_directory
@directory = @connection.directories.get(DIRECTORY)
end
def upload_report_page(index_file)
file = @directory.files.get(index_file)
file.body = File.open(index_file)
file.acl = 'public-read'
file.save
end
私のスクリプトは次のようになります。
filename = "index.html"
s3 = FogManager.new
s3.connect
s3.locate_directory
# code for generating the html page
s3.upload_report_page(filename)
すべてのコードは機能しますが、html ファイル全体が s3 にアップロードされません。
Ruby 2.0.0p0で最新バージョンのfog(1.15.0)を使用しています
手動で irb にアクセスして s3 接続を確立し、ファイルを見つけて、新しいファイルをアップロードすることができました。私はこれらのコマンドを使用します:
require 'fog'
connection = Fog:Storage({provider: 'AWS',
aws_access_key_id: 'xxx',
aws_secret_access_key: 'xxx',
persistent: true})
directory = connection.directories.get('my_directory')
file = directory.files.get('index.html')
file.body = File.open('index.html')
file.acl = 'public-read'
file.save
この方法でファイルをアップロードすると、正常に動作し、ファイル全体がアップロードされますが、スクリプトを持つ目的が無効になります。
どんな洞察も大歓迎です!