我安装了S3,它在heroku上运行得很好。当我尝试运行RAILS_ENV=production bundle exec rake assets:precompile
将资产推送到heroku时,它会返回上述错误。如果我运行heroku配置,它已经有S3存储桶和其他所有设置。
它在寻找什么,为什么不能仅仅为编译资产找到S3名称。
在production.rb
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: 'us-west-2',
}
}
我在这方面找到了一些SO,但没有人指出我的解决方案。任何帮助表示赞赏!
更新: 我必须在本地编译的原因是因为heroku正在取出application.js文件。
remote: Running: rake assets:precompile
remote: I, [2016-09-23T15:12:53.753671 #267] INFO -- : Writing /tmp/build_97a8fe2ca07bc4bf090be26f2be2872b/public/assets/application-9c608f99ae2b1980d74ba674b9f9ff7f0ae113d532e2c2ea580960a6a53346bb.js
remote: Asset precompilation completed (6.54s)
remote: Cleaning assets
remote: Running: rake assets:clean
remote: I, [2016-09-23T15:12:55.908630 #273] INFO -- : Removed application-489c5647af1ca8b6a56e560e8a83d77a1a070778dabb4f0b40f55c4a4e5b8feb.js
答案 0 :(得分:1)
您正尝试在本地编译资源,而Heroku上的S3_BUCKET_NAME
配置属性无效。
如果要在本地运行应用程序(包括运行Rake任务),则需要定义该环境变量。
那就是说,这句话毫无意义:
当我尝试运行
RAILS_ENV=production bundle exec rake assets:precompile
将资源推送到heroku时,
您没有理由需要在本地运行rake assets:precompile
以将资产“推送到Heroku”。每次推送新提交时,Heroku都会自动为您编译资产。