Ruby on rails Ruby:临时存储远程文件

Ruby on rails Ruby:临时存储远程文件,ruby-on-rails,ruby,file,carrierwave,temporary-files,Ruby On Rails,Ruby,File,Carrierwave,Temporary Files,我试图将一个文件发布到一个API,我使用CarrierWave远程存储了这个API 使用CarrierWave使用尚未上载的本地文件效果良好: JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", { keystore: File.new(Rails.root.join('file.keystore')) }), symbolize_names: true)[:id] => 3121

我试图将一个文件发布到一个API,我使用CarrierWave远程存储了这个API

使用CarrierWave使用尚未上载的本地文件效果良好:

JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
    keystore: File.new(Rails.root.join('file.keystore'))
}), symbolize_names: true)[:id]
=> 312199
以下是我如何尝试在本地临时存储文件:

response = HTTParty.get model.file.url
f = Tempfile.new SecureRandom.hex
f.binmode
f.write response.body
f.flush
f.close
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
    keystore: File.new(f)
}), symbolize_names: true)[:id]
RestClient::BadRequest: 400 Bad Request
我检查了temp文件和
file.keystore
是否具有相同的内容


我做错了什么?

如果您的api依赖于文件名是
file.keystore
,但您不关心文件的持久性,为什么不写一个文件,发布它,然后删除该文件

    response = HTTParty.get model.file.url
    file = File.open('file.keystore', 'w') do |f|
        f.binmode
        f.write response.body
    end

    JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
        keystore: 'file.keystore' 
    }), symbolize_names: true)[:id]

    File.delete('file.keystore')

我猜是
https://build.phonegap.com/api/v1/keys/android
需要名为
file.keystore的文件名
?如果文件内容相同,还有什么其他解释呢?你说得对。这很明显。非常感谢。