2013-07-16 68 views
2

我寫了一個代碼來上傳s3上的文件,並且它與Ruby一起工作正常。aws/s3寶石與Jruby不兼容

我試圖運行使用JRuby相同的代碼,但我的代碼被上傳功能

步驟,我跟着

  1. 安裝寶石卡之前: - 的JRuby -S創業板安裝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}" 
  1. 冉文件中像這樣 JRuby的file_name.rb upload_file_name.html鬥
+0

嘗試AWS-SDK寶石檢查了這一點[鏈接](https://gist.github.com/IndianGuru/1194616) –

回答

1

我發現,在使用AWS-S3寶石JRuby的一個問題。

所以,我想它使用 「AWS-SDK」 寶玉

  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,這給知道如何使用 「寶石AWS-SDK」