小编bnz*_*ner的帖子

将ACL设置为public_read,将文件上载到AWS S3

在我的Rails应用程序中,我在创建时将客户RMA运输标签保存到S3存储桶.我刚刚更新到aws-sdk gem的V2,现在我设置ACL的代码不起作用.

在V1.X中运行的代码:

  # Saves label to S3 bucket
  s3 = AWS::S3.new
  obj = s3.buckets[ENV['S3_BUCKET_NAME']].objects["#{shippinglabel_filename}"]
  obj.write(open(label.label('pdf').postage_label.label_pdf_url, 'rb'), :acl => :public_read)
Run Code Online (Sandbox Code Playgroud)

.write似乎已被弃用,所以我现在正在使用.put.一切正常,除非我尝试设置ACL.

V2.0的新代码:

  # Saves label to S3 bucket
  s3 = Aws::S3::Resource.new
  obj = s3.bucket(ENV['S3_BUCKET_NAME']).object("#{shippinglabel_filename}")
  obj.put(Base64.decode64(label_base64), { :acl => :public_read })
Run Code Online (Sandbox Code Playgroud)

我得到一个Aws::S3::Errors::InvalidArgument错误,指向ACL.

ruby acl ruby-on-rails amazon-s3 aws-sdk

10
推荐指数
1
解决办法
3333
查看次数

在推送到Heroku之前删除Rails中的预编译资产

我在Rails 4.0.8上有一个Heroku应用程序.

在早期的某个时刻,我意识到我的CSS和JS更改不会推送到Heroku,除非我rake assets:precompile在push(git push heroku master)之前运行并提交了新的资产文件.

我现在已经做了大约14个月的资产预编译了,而且我已经积累了超过48mb的旧版预编译资产.但是,当我从public/assets手动删除它们时,我的网站丢失了所有的CSS和JS.

如何删除旧的预编译资产并让Heroku在推送时开始编译?

ruby git ruby-on-rails heroku asset-pipeline

1
推荐指数
1
解决办法
1566
查看次数

标签 统计

ruby ×2

ruby-on-rails ×2

acl ×1

amazon-s3 ×1

asset-pipeline ×1

aws-sdk ×1

git ×1

heroku ×1