私は Soundcloud の API ドキュメントにうまく従いましたが、エラーが発生して行き詰まりました。
彼らの例を使用してファイルをアップロード/投稿するとき、ローカルマシンでファイルをハードコーディングしても問題はありません。私が本当にやりたいことは、S3 に保存されているファイルを転送することです。これはErrno::ENOENT - No such file or directoryエラーで失敗し続けました。Open-URI が含まれており、別のサーバーで公開されているファイルをハードコーディングしてテストしましたが、それでも失敗します。そのため、問題が S3 または私の generate_secure_s3_url にあるとは感じていません。
私のコードは次のとおりです。
def product_tracks_to_soundcloud(access_token)
require 'soundcloud'
require 'open-uri'
# create a client object with access token
client = Soundcloud.new(:access_token => access_token)
self.producttracklistings.each do |pt|
filebase = URI.encode(pt.track.track_file_name, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
fileurl = generate_secure_s3_url(filebase)
# upload an audio file
track = client.post('/tracks', :track => {
:title => pt.track.name,
:asset_data => File.new(fileurl, 'rb')
})
end