2

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

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

我遵循的步骤

  1. 安装宝石:-

    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
    
4

1 回答 1

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

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

于 2013-07-16T11:05:23.823 回答