首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails:上传到AWS-S3时,如何解决"Digest::Digest is deprecated;use Digest“警告?

Ruby on Rails:上传到AWS-S3时,如何解决"Digest::Digest is deprecated;use Digest“警告?
EN

Stack Overflow用户
提问于 2014-08-20 01:37:18
回答 3查看 3.3K关注 0票数 4

我正在尝试制作一个应用程序,用户可以上传,下载和流媒体音乐到亚马逊网络服务,简单存储服务(AWS-S3)。

我正在尝试解决的一个问题是,当我尝试上传MP3文件时,我在终端中收到一条警告,在我被重定向并警告用户“无法完成上传”之前,该警告恰好重复了四次。当我在upload方法中对我的AWS对象使用.store方法时,我得到"Digest::Digest is deprecated;use Digest“警告。

有没有其他人处理过这种情况,可能会帮助我?非常感谢,非常感谢。

这是我的控制器:

类SongsController < ApplicationController

代码语言:javascript
复制
  BUCKET = 'batana_application'

  def index
    @songs = AWS::S3::Bucket.find(BUCKET).objects
  end

  def upload
    begin
      AWS::S3::S3Object.store(sanitize_filename(params[:mp3file].original_filename), params[:mp3file].read, BUCKET, :access => :public_read)
      redirect_to root_path
    rescue
      render :text => "Couldn't complete the upload"
    end
  end

  def delete
    if (params[:song])
      AWS::S3::S3Object.find(params[:song], BUCKET).delete
      redirect_to root_path
    else
      render :text => "No song was found to delete!"
    end
  end

  private

  def sanitize_filename(file_name)
    just_filename = File.basename(file_name)
    just_filename.sub(/[^\w\.\-]/,'_')
 end

end

当我试图上传一个文件时,我的终端里发生了这样的事情:

代码语言:javascript
复制
taimurs-mbp:batana taimurknaziri$ rails s
=> Booting WEBrick
=> Rails 4.1.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-08-19 12:19:18] INFO  WEBrick 1.3.1
[2014-08-19 12:19:18] INFO  ruby 2.1.1 (2014-02-24) [x86_64-darwin12.0]
[2014-08-19 12:19:18] INFO  WEBrick::HTTPServer#start: pid=4469 port=3000


Started POST "/songs/upload" for 127.0.0.1 at 2014-08-19 12:19:26 -0400
Processing by SongsController#upload as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"/ZUu7QCsH9D1DYVpXoFkXaOnghbgjm7J/fkJ6zAAmgs=", "mp3file"=>#<ActionDispatch::Http::UploadedFile:0x00000104eaa128 @tempfile=#<Tempfile:/var/folders/l7/f3_r_hhs46lfprth_1pw57vw0000gn/T/RackMultipart20140819-4469-1dw6jsw>, @original_filename="doubletrouble.mp3", @content_type="audio/mp3", @headers="Content-Disposition: form-data; name=\"mp3file\"; filename=\"doubletrouble.mp3\"\r\nContent-Type: audio/mp3\r\n">, "commit"=>"Upload"}
Digest::Digest is deprecated; use Digest
Digest::Digest is deprecated; use Digest
Digest::Digest is deprecated; use Digest
Digest::Digest is deprecated; use Digest
  Rendered text template (0.0ms)
Completed 200 OK in 31895ms (Views: 5.8ms | ActiveRecord: 0.0ms)
EN

回答 3

Stack Overflow用户

发布于 2014-08-20 02:01:08

你有没有试过确保你有一个最新版本的gem?

检查您的gemfile:

代码语言:javascript
复制
gem "aws-sdk", "~> 1.33.0"
票数 2
EN

Stack Overflow用户

发布于 2014-08-20 23:06:48

在阅读了由亚马逊网络服务提供的文档后,我找到了在我的亚马逊网络服务3对象AWS::S3::S3Object上调用的正确方法。Here,它说明我必须在我的AWS::S3::S3Object上使用.write方法。

根据文档,我的问题得到了解决,我不再收到重复的Digest::Digest is deprecated; use Digest警告。

票数 2
EN

Stack Overflow用户

发布于 2016-01-06 00:16:09

我通过在application.rb中添加AWS::S3::DEFAULT_HOST.replace('s3-us-west-2.amazonaws.com')解决了这个问题。在我的例子中,存储桶的区域是俄勒冈州,端点是's3-us-west-2.amazonaws.com‘Regions and Endpoints

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25389624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档