【问题标题】:Ruby On Rails and Heroku issue when writing in yaml files在 yaml 文件中编写时出现 Ruby On Rails 和 Heroku 问题
【发布时间】:2014-01-03 16:08:52
【问题描述】:

我正在使用 rails 并在 heroku 上部署我的应用程序。

我已经建立了一个翻译系统,在这个系统中我需要写在 yaml 文件中

我是这样进行的:

File.open(ENV['PATH_TO_FILE'], 'w') do |f|
    f.write hash.to_yaml
  end

在本地主机中,当我这样做时,它在 Rails 控制台中完美运行

YAML::load_file(ENV['PATH_TO_FILE'])

我可以看到已添加的新键。

但是,在 Heroku 上部署后,并在 heroku 的 rails 控制台中运行相同的代码后,没有添加任何键。

有没有人能解决这个问题?

提前致谢,

【问题讨论】:

  • 两项: 1.您尝试写入哪个文件,您在Heroku 上是否拥有该位置的写入权限?是否有任何诊断可用于检查那个?也许只是在 Heroku 中打开一个外壳,看看你是否可以touch 文件? 2. 应该创建文件的代码是否在与控制台相同的测功机中运行?因为此链接暗示如果不是则存在问题:devcenter.heroku.com/articles/dynos#ephemeral-filesystem
  • 首先感谢您的回答!我正在尝试在 config/locales/en.yml 中写入,如何检查我是否对 heroku 具有这些权限?我可以在控制台中加载文件,所以我似乎拥有它们!我认为该文件是临时写入的,没有保存,但我不知道如何解决这个问题:(

标签: ruby-on-rails ruby-on-rails-3 heroku


【解决方案1】:

Heroku 是 read-only file system,因此无法写入 yaml 文件。

我会探索使用像 redis 或类似的键/值存储来代替 yaml 文件。

【讨论】:

  • 旧的 Bamboo 堆栈是只读的。更现代的 Cedar 堆栈使用“临时文件系统”。
【解决方案2】:

如果您在 Bamboo stack 上,Heroku's filesystem is read only

如果您在 Cedar 上,每个 dyno 都有自己的临时文件系统。查看this section of the Heroku docs

也有可能环境变量 PATH_TO_FILE 在 heroku 上设置不正确。 我推荐使用 Figaro gem 来管理你的环境变量 https://github.com/laserlemon/figaro

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2019-04-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多