gpt4 book ai didi

ruby-on-rails - Heroku - 如何写入 "tmp"目录?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:32 26 4
gpt4 key购买 nike

我需要使用 Heroku (Cedar) 上的 tmp 文件夹来写入一些临时数据,我正在尝试这样做:

open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end

但这会产生错误

Errno::ENOENT: No such file or directory - /app/tmp/image-2.png

我正在尝试这段代码,它在本地主机上运行正常,但我无法让它在 Heroku 上运行。

将一些文件保存到 Heroku(Cedar 堆栈)上的 tmp 目录的正确方法是什么?

谢谢

编辑:我正在使用需要访问 tmp 文件的延迟作业运行方法。

编辑 2:我在做什么:

files.each_with_index do |f, index|
unless f.nil?
result = JSON.parse(buffer)
filename = "#{Time.now.to_i.to_s}_#{result['filename']}" # thumbnail name
thumb_filename = "#{Rails.root}/tmp/#{filename}"

image_url = f.file_url+"/convert?rotate=exif"

open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end

img = Magick::Image.read(image_url).first
target = Magick::Image.new(150, 150) do
self.background_color = 'white'
end
img.resize_to_fit!(150, 150)
target.composite(img, Magick::CenterGravity, Magick::CopyCompositeOp).write(thumb_filename)

key = File.basename(filename)
s3.buckets[bucket_name].objects[key].write(:file => thumb_filename)

# save path to the new thumbnail to database
f.update_attributes(:file_url_thumb => "https://s3-us-west-1.amazonaws.com/bucket/#{filename}")
end
end

我在数据库中有关于图像的信息。这些图像存储在 Amazon S3 存储桶中。我需要为这些图像创建缩略图。所以我将一张一张地浏览另一张图片,加载图片,暂时保存它,然后调整它的大小,然后我会将这个缩略图上传到 S3 存储桶。

但是这个过程似乎在 Heroku 上不起作用,那么,我该怎么做(我的应用程序在 Heroku 上运行)?

最佳答案

/tmp 是否包含在您的 git 存储库中?在您的 .slugignore 中删除了吗?该目录可能在 Heroku 上不存在。

尝试在写入之前快速输入 mkdir:

Dir.mkdir(File.join(Rails.root, 'tmp'))

或者甚至在初始化程序或其他东西中......

关于ruby-on-rails - Heroku - 如何写入 "tmp"目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com