Database 如何从heroku上的rake任务访问文件?

Database 如何从heroku上的rake任务访问文件?,database,ruby-on-rails-3,heroku,Database,Ruby On Rails 3,Heroku,我正在尝试在Rails应用程序中植入数据,尤其是使用carrierwave的应用程序。我使用的是stackoverflow上两个不错的解决方案的组合 我有以下资料: namespace :db do desc "This loads the development data." task :seed => :environment do require 'active_record/fixtures' Dir.glob(RAILS_ROOT + '/db/fix

我正在尝试在Rails应用程序中植入数据,尤其是使用carrierwave的应用程序。我使用的是stackoverflow上两个不错的解决方案的组合

我有以下资料:

namespace :db do
  desc "This loads the development data."
  task :seed => :environment do
    require 'active_record/fixtures'
    Dir.glob(RAILS_ROOT + '/db/fixtures/*.yml').each do |file|
      base_name = File.basename(file, '.*')
      puts "Loading #{base_name}..."
      ActiveRecord::Fixtures.create_fixtures('db/fixtures', base_name)
    end
    #add in the image file for the default data
    for item in Item.find(:all)
      item.filename.store!(File.open(File.join(Rails.root, "app/assets/images/objects/" + item.name.gsub(/ /,'').downcase + ".svg")))
      item.save!
    end
  end

  desc "This drops the db, builds the db, and seeds the data."
  task :reseed => [:environment, 'db:reset', 'db:seed']
end
然而,在heroku上,我不断得到关于路径的错误,例如

rake aborted!
No such file or directory - app/assets/images/objects/house.svg
我已经尝试过该行的几个版本:

item.filename.store!(File.open(File.join(Rails.root, "app/assets/images/objects/" + item.name.gsub(/ /,'').downcase + ".svg")))

我基本上改变了使用File.join和连接的方式,并且尝试使用RAILS\u根目录,这在上面似乎可以正常工作,但我似乎总是遇到这个错误。

您是否在
app/assets/images/objects/
中创建任何文件,或者将数据放在那里?您的git repo中是否存在该目录?通过从命令行运行
heroku run ls app/assets/images/objects/
,可以检查heroku上是否存在该目录

heroku上运行的所有应用程序都使用:

每个dyno都有自己的临时文件系统,以及最近部署的代码的新副本。在dyno的生命周期内,其运行进程可以将文件系统用作临时草稿行,但是任何其他dyno中的进程都看不到写入的文件,并且一旦dyno停止或重新启动,写入的任何文件都将被丢弃


这意味着,除非您的git存储库中有一个名为
app/assets/images/objects/
的目录中的文件,或者您在部署程序后以编程方式创建这些文件,否则实际上可能没有任何此类文件或同名目录。

我确实在该位置有文件。。。事实证明,我没有,在本地,我将许多文件(如House.svg)重命名为House.svg,但我没有以git满意的方式进行,因此heroku不知道这些更改,我的脚本失败了。非常感谢你的帮助!