【问题标题】:Heroku - Read-only file system - /var/www?Heroku - 只读文件系统 - /var/www?
【发布时间】:2011-08-04 23:19:24
【问题描述】:

我正在尝试迁移数据库,但出现此错误..

heroku rake db:migrate
(in /app)
/app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/file_utils.rb:10: warning: already initialized constant RUBY
/app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/file_utils.rb:84: warning: already initialized constant LN_SUPPORTED
rake/rdoctask is deprecated.  Use rdoc/task instead (in RDoc 2.4.2+)
rake aborted!
Read-only file system - /var/www
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:243:in `mkdir'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:243:in `fu_mkdir'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:217:in `block (2 levels) in mkdir_p'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:215:in `reverse_each'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:215:in `block in mkdir_p'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:201:in `each'
/usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:201:in `mkdir_p'
/app/config/initializers/setup_shared_data.rb:6:in `<top (required)>'
/app/vendor/rails/activesupport/lib/active_support/dependencies.rb:147:in `load'
/app/vendor/rails/activesupport/lib/active_support/dependencies.rb:147:in `load_with_new_constant_marking'
/app/vendor/rails/railties/lib/initializer.rb:622:in `block in load_application_initializers'
/app/vendor/rails/railties/lib/initializer.rb:621:in `each'
/app/vendor/rails/railties/lib/initializer.rb:621:in `load_application_initializers'
/app/vendor/rails/railties/lib/initializer.rb:176:in `process'
/app/vendor/rails/railties/lib/initializer.rb:113:in `run'
/app/config/environment.rb:9:in `<top (required)>'

我该如何解决这个问题,或者我可以做些什么来深入挖掘......

【问题讨论】:

    标签: ruby-on-rails ruby deployment


    【解决方案1】:

    看起来/app/config/initializers/setup_shared_data.rb 的第 6 行正在尝试在本地文件系统上创建一个目录(mkdir 就是这样)。

    这在 Heroku 上是不允许的,因为文件系统是只读的(/tmp 除外)。有关此限制的更多信息,请参阅文档 here

    将该行添加到您的问题中,也许我可以提供更具体的答案。

    【讨论】:

    • 链接失效,如果仍然可以恢复,请提供缺失的信息
    • @GrecoJonathan 我已经更新了 Wayback 机器上原始内容的链接,但我不确定它是否与现代 Heroku 堆栈相关。可以在此处找到有关文件系统限制的最新讨论:devcenter.heroku.com/articles/dynos#ephemeral-filesystem
    • 如果内容再移动把相关信息放在这里就好了
    【解决方案2】:

    关于 rdoctask 被弃用...考虑添加:

    `gem 'rdoc'` 
    

    到您的 Gemfile。或者,您可以将 rdoc/ 添加到您的 .gitignore。

    另一种方法是编辑您的 Rakefile:

    require 'rdoc/task'
    RDoc::Task.new do |rdoc|
    

    如果您可以发布您的 Gemfile,将会很有帮助。

    【讨论】:

      【解决方案3】:

      1[读/写][2]

      heroku 运行 bash -a yourapplication 并更改 chmod 777 -R 文件夹或 chmod 777 -R 文件

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 2019-01-23
        • 2010-12-22
        • 2011-03-25
        • 1970-01-01
        • 2015-04-11
        • 2018-10-05
        • 2012-03-11
        相关资源
        最近更新 更多