だからここに私のコードがあります。典型的な霧のコードのように見えます。
prefix = 'data:image/png;base64,'
png = Base64.decode64(data[prefix.length, data.length-1])
aws_settings = YAML.load_file(RAILS_ROOT + "/config/amazon_s3.yml")[RAILS_ENV] rescue nil
if aws_settings
connection = Fog::Storage.new(
:provider => 'AWS',
:aws_access_key_id => aws_settings['access_key_id'],
:aws_secret_access_key => aws_settings['secret_access_key']
)
directory = connection.directories.get(aws_settings['bucket_name'])
filename = "#{quiz_id}/#{user_id}_#{question_id}.png"
file = directory.files.create(
:key => filename,
:body => png,
:public => true
)
end
問題は、file.public_url を呼び出すと、2 つの異なる URL のいずれかがランダムに取得されることです。どちらかを取得します:
https://bucket_name.s3.amazonaws.com/19/235_146.png
また
http://s3.amazonaws.com/bucket_name/19/235_150.png
どちらにしても構いませんが、URL を一貫させたいと思います。
この問題を解決する方法を知っている人はいますか? コードで何か間違ったことをしていますか?
また、Delayed::Job 内でこれを行っていることにも言及する必要があります。これを通常のメソッド呼び出しとして行うと、常に https バージョンが表示されるようです。しかし、それを Delayed Job に貼り付けると、ランダム性が得られます。非常に奇妙な。