【问题标题】:aws/s3 gem is not compatible with JRubyaws/s3 gem 与 JRuby 不兼容
【发布时间】:2013-07-14 10:26:35
【问题描述】:

我编写了一段代码在 s3 上上传文件,它在 Ruby 上运行良好。

我试图用 jruby 运行相同的代码,但我的代码在上传功能之前卡住了

我遵循的步骤

  1. 安装 gem :-

    jruby -S gem install aws-s3
    
  2. 我的代码

    require 'aws/s3'
    local_file = ARGV[0]
    bucket = ARGV[1]
    AWS::S3::Base.establish_connection!(
        access_key_id: 'put_access_key',
        secret_access_key: 'put_secret_access_key')
    base_name = File.basename(local_file)
    AWS::S3::S3Object.store(
        base_name,
        File.open(local_file),
        bucket,
        access: :public_read)
    puts 'Uploaded!'
    url = s3_obj.url_for(
        "#{local_file}",
        "#{bucket}",
        authenticated: false)
    puts "#{url}"
    
  3. 这样运行文件

    jruby file_name.rb upload_file_name.html bucket
    

【问题讨论】:

  • 试试 aws-sdk gem 看看link

标签: ruby file-upload amazon-s3 jruby


【解决方案1】:

我发现在 jruby 中使用 aws-s3 gem 有问题。

所以,我尝试使用“aws-sdk”gem

  1. jruby -S gem install aws-sdk
  2. 编写代码将文件上传到s3
require 'aws-sdk'
file_name = ARGV[0]
bucket = ARGV[1]
AWS.config(
  access_key_id: 'PUT ACCESS KEY',
  secret_access_key: 'PUT SECRET KEY')
s3 = AWS::S3.new
base_name = File.basename(file_name)
o = s3.buckets[bucket].objects[base_name].write(File.open(file_name))
puts '--------------Uploaded!-------------------'
o.acl = :public_read_write
url = o.public_url
puts "#{url}"

  1. 将其保存在 ruby​​ 文件中并按如下所示运行

    jruby file_name.rb upload_file_name.html path_bucket_where_to_upload

使用这个 DOC ,它给出了如何使用“gem aws-sdk”的想法

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多