AWS と rubyについて勉強中です。
AWS-sdk-for-rubyを使いデータをs3にアップロードしようとしています。
その際、php側から送られてきたデータをもとにrubyを使ってs3にアップロードしようと思っています。
php
1$results = shell_exec("ruby s3uplod.rb devtouch2 51 scdci filename.txt Horseracing.mp4"); 2 echo "<pre>".$results . "</pre>";
ruby
1require "aws-sdk-core" 2require 'aws-sdk' 3#require 'exec.php' 4 5def test_bucket 6 7bucket = Aws::S3::Resource.new( 8 :region => 'ap-northeast-1', 9 :access_key_id => '***********', 10 :secret_access_key => '********************************', 11 ).bucket('test') 12end 13 14 15def upload_file(object_name, target_file) 16 # 正常終了すれば true が返る 17 ARGV.each_with_index do |arg, i| 18 puts "ARGV[#{i}]:#{arg}" 19 end 20 21 $siteid = ARGV[0] 22 $contentsid = ARGV[1] 23 $contentspasskey = ARGV[2] 24 $filename = ARGV[3] 25 $uploadfile = ARGV[4] 26 27 contentsfolder = (($contentsid.to_i / 100).floor + 1)*100 28 29 $contentsfolder1 = contentsfolder.to_s 30 31 puts $contentsfolder1 32 33 str = $contentsid + (Digest::MD5.digest($contentsid + $contentspasskey + $siteid )) 34 35 36 contentsfolder2 = str[0...10].to_s 37 38 puts = contentsfolder2 39 40 apfiles = apfiles 41 $siteid_ture = $siteid 42 test_bucket.object(apfiles/$siteid_ture/$contents/$contentsfolder1/$contentsfolder2/$uploadfile).upload_file($uploadfile) 43rescue Aws::S3::MultipartUploadError => _e 44 # (e.errors にStandardError オブジェクトの配列が格納されている) 45 46 # 失敗しても(リトライ処理など)何もしない 47 false 48 49end 50 51if upload_file($uploadfile, $uploadfile) # => true/false 52 puts 'アップロードに成功しました' 53else 54 puts 'アップロードに失敗しました' 55end
しかし
test_bucket.object(apfiles/$siteid_ture/$contents/$contentsfolder1/$contentsfolder2/$uploadfile).upload_file($uploadfile)
のところがうまくいかずに困っています。
アップロードするファイルをバケットの中のこの階層に入れるよって指示したつもりですが
undefined method `/' for "":String (NoMethodError)
このようなエラーげ出てしまったりうまくいきません。どのように解決すればよろしいでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。