2014-10-10 42 views
0

我在Heroku上托管了一个Rails应用程序。该应用程序的一部分涉及一些数据写入到CSV,然后重命名文件在导轨控制台中写入文件在退出时不保存

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

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

File.rename(file_path, new_file_path) 

当我运行在轨道控制台这段代码,该文件是重新命名,当我读它时,一切似乎都很好。但是,当我退出控制台时,更改不会持续。当我重新进入控制台时,文件已恢复到其原始状态。任何想法发生了什么?谢谢

+0

尝试使用'wb'代替 – 2014-10-10 18:42:16

+0

我不认为您可以按照您希望在Heroku服务器上的方式编辑文件。我不明白slug是如何工作的,但是基于'heroku run bash'这个例子:https://devcenter.heroku.com/articles/one-off-dynos,其中的例子显示了用户删除'Procfile'没有不良影响,我不确定文件更改是否具有持久影响。 – ptd 2014-10-10 18:51:43

回答

3

Heroku磁盘空间不适用于存储。具体到实例。任何文件操作都应该对S3等外部服务进行。

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

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

+0

谢谢!这似乎做到了。 – user3821415 2014-10-10 19:25:59

相关问题