我一直在进行一些编码练习,我需要知道如何为我的应用程序提供必要的凭据,以便建立与Microsoft Azure的连接并在使用Heroku在生产环境中运行的应用程序中上传图像。
我正在使用CarrierWave gem,如Rails教程所示,是在生产中上传图像。我使用的是Microsoft Azure而不是AWS,我的carrier_wave.rb
的结构如下:
if Rails.env.production?
require 'azure/storage/blob'
blob_client = Azure::Blob::BlobService.
CarrierWave.configure do |config|
blob_client = Azure::Storage::Blob::BlobService.create(
storage_account_name: my_account_name,
storage_access_key: my_account_key
)
end
end
但是当我按下Heroku并尝试在我的应用中上传图片时,它就会崩溃
此处的日志:
2019-02-23T04:01:46.917324+00:00 app[web.1]: D, [2019-02-23T04:01:46.917249 #10] DEBUG -- : [d1de016d-29a7-4338-b6f0-071aced60e70] (0.6ms) ROLLBACK
2019-02-23T04:01:46.917957+00:00 app[web.1]: I, [2019-02-23T04:01:46.917872 #10] INFO -- : [d1de016d-29a7-4338-b6f0-071aced60e70] Completed 500 Internal Server Error in 112ms (ActiveRecord: 5.2ms)
2019-02-23T04:01:46.918790+00:00 app[web.1]: F, [2019-02-23T04:01:46.918718 #10] FATAL -- : [d1de016d-29a7-4338-b6f0-071aced60e70]
2019-02-23T04:01:46.918843+00:00 app[web.1]: F, [2019-02-23T04:01:46.918781 #10] FATAL -- : [d1de016d-29a7-4338-b6f0-071aced60e70] ArgumentError (Signing key must be provided):
2019-02-23T04:01:46.918891+00:00 app[web.1]: F, [2019-02-23T04:01:46.918837 #10] FATAL -- : [d1de016d-29a7-4338-b6f0-071aced60e70]
2019-02-23T04:01:46.918942+00:00 app[web.1]: F, [2019-02-23T04:01:46.918891 #10] FATAL -- : [d1de016d-29a7-4338-b6f0-071aced60e70] app/controllers/books_controller.rb:22:in `create'
我遵循了一些示例,这些示例说明了如何从Microsoft Docs提供所需的信息,但是看来我没有正确地进行集成。感谢您在此问题上的帮助。
答案 0 :(得分:0)
您从哪里得到my_account_name
和my_account_key
?您确定有效且有价值吗?
根据BlobService#initialize-> SharedKey#initialize-> Signer#initialize
您的acces_key
是nil
# Initialize the Signer.
#
# @param access_key [String] The access_key encoded in Base64.
def initialize(access_key)
if access_key.nil?
raise ArgumentError, 'Signing key must be provided'
end
@access_key = Base64.strict_decode64(access_key)
end