在rails控制台中写入文件不会在退出时保存

时间:2014-10-10 18:40:24

标签: ruby-on-rails ruby file csv heroku

我在Heroku上有一个rails应用程序。部分应用程序涉及将一些数据写入CSV,然后重命名文件

代码非常简单,看起来像这样

CSV.open(file_path, "a") do |csv|
    csv << some_data
end

File.rename(file_path, new_file_path)

当我在rails控制台中运行此代码时,文件被重命名,当我读取它时,一切似乎都很好。但是,当我退出控制台时,更改不会持续存在。当我重新进入控制台时,文件已恢复到其原始状态。知道发生了什么事吗?感谢

1 个答案:

答案 0 :(得分:3)

Heroku磁盘空间不适合存储。它特定于实例。任何文件操作都应该针对外部服务,例如S3。

当您调用控制台时,正在启动应用程序的实例。您正在写入文件系统。然后,当您退出控制台时,您使用的实例会进行蒸发。

然后,当您再次调用控制台并且文件不存在时,您将启动一个新实例,因为它已写入另一个不再存在的实例。