1

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

この方法でファイルをアップロードすると、正常に動作し、ファイル全体がアップロードされますが、スクリプトを持つ目的が無効になります。

どんな洞察も大歓迎です!

4

0 に答える 0