我有一个默认文件,在注册新帐户后,会发送到亚马逊桶。那很有效。但突然间,在不更改任何代码的情况下,我使用此方法的所有测试都失败并显示错误:
Errno :: ECONNREFUSED:连接被拒绝 - 连接(2)for "(bucketname).S3-EU-西1.amazonaws.com"港口443
导致此错误突然出现的原因是什么?测试错误都指向下面方法中的obj.upload_file(drawingfile)
。
发送文件的模型方法尚未更改,并且是:
def self.upload_empty_drawing(id) # In the S3 bucket's I've granted access to my heroku domain as well as to https://<name>.c9.io (I'm programming in Cloud9, an IDE solution)
s3 = Aws::S3::Resource.new(
credentials: Aws::Credentials.new(
Rails.application.secrets.S3_ACCESS_KEY,
Rails.application.secrets.S3_SECRET_KEY),
region: Rails.application.secrets.AWS_REGION
)
drawingfile = 'app/assets/emptyexample.xml'
filename = "example/#{id}/example-#{id}.xml"
obj = s3.bucket(Rails.application.secrets.S3_BUCKET_EXAMPLES).object(filename)
obj.upload_file(drawingfile)
Drawing.create!(organization_id: id, example_file: obj.public_url)
end
更新:我认为除了模型方法中的错误外,还有其他事情可能发生。这是因为:
We're sorry, but something went wrong
。heroku logs --tail
(正如我所提到的,我使用的是Cloud9 IDE),产生了错误Unable to connect to api.heroku.com
。connection refused
错误。heroku config
,会产生错误Unable to connect to Heroku API, please check internet connectivity and try again
。不确定发生了什么......!?任何想法如何找出问题,都表示赞赏。
答案 0 :(得分:0)
我有类似的问题与权限有关,所以我更新了我的
中的代码`......image.rb`............
has_attached_file :avatar,
:styles =>
{
:medium => "x300",
:small => "150x150>",
:thumb => "90x90>",
},
:storage => :s3,
:s3_permissions => :private,
:s3_credentials => S3_CREDENTIALS
.....config/initializers/paperclip.rb...............
S3_CREDENTIALS = Rails.root.join("config/s3.yml")
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:id/:style/:filename'
.....config/s3.yml....................
development:
bucket: mybucketname
access_key_id: xxxxxxxxxxxxxxxxxxxxx
secret_access_key: xxxxxxxxxxxxxxxx+xxxxxxxxx
答案 1 :(得分:0)
我已经与用于编写代码的IDE保持联系。他们非常友好地重置/重新启动我的帐户或其他东西(不确定他们做了什么,但我已经&#34;重新连接&#34;在我的屏幕上几分钟)。在此之后,所有问题都消失了。因此,原因似乎是IDE侧面的配置设置。
(PS生产方面的问题有不同的原因:虽然我设置了一个秘密变量的密钥,但在secrets.yml
我还没有定义在生产中使用它(仅在开发和测试中))