2016-01-04 52 views
0

我试图创建Heroku的TMP文件夹使用FileUtils名为“服务器的目录:Rails - 无法在Heroku的tmp文件夹中创建目录/文件?

# create servers folder is it doesn't exist 
dir = File.dirname("#{Rails.root}/tmp/servers") 
FileUtils.mkdir(dir) unless File.directory?(dir) 

我也尝试使用Heroku的控制台mkdir创造,但它似乎并没有被创建:

sudo heroku run 'mkdir /app/tmp/servers' 
Running mkdir /app/tmp/servers on someapp... up, run.8611 

sudo heroku run 'ls /app/tmp/.' 
Running ls /app/tmp/. on someapp... up, run.3195 
cache heroku-buildpack-release-step.yml 

我在做什么错?

+0

你可能会在这个http://devcenter.heroku.com/articles/read-only-filesystem'#{Rails的帮助。 root}/tmp' –

+0

@RajarshiDas我以前读过这个,它没有帮助 – Tom

+2

你不能在Heroku上存储文件。这不是服务器;它是一个应用服务器。你必须使用云存储,即使是你的'tmp'文件。 – Elvn

回答

5

你可以写入文件系统,但是当你做heroku run这是一个关闭测功机如此完全独立于您的网络dynos,或者甚至第二个关闭dyno。它会从最后一次部署中获取slug的新副本 - 它们不共享相同的文件系统,并且在会话断开连接或终止时不会保留任何内容。

▶ heroku run bash 
Running bash on xxx... up, run.5673 
~ $ cd tmp 
~/tmp $ mkdir foo 
~/tmp $ cd foo 
~/tmp/foo $ touch bah.txt 
~/tmp/foo $ ls 
bah.txt 
~/tmp/foo $ 

,如果你退出,并打开一个新的会话

▶ heroku run bash 
Running bash on xxx... up, run.6709 
~ $ cd tmp 
~/tmp $ ls 
cache heroku-buildpack-release-step.yml 
~/tmp $ 
相关问题