繁体   English   中英

Heroku Rake任务文件路径错误

[英]Heroku rake task file path error

我有需要为我的heroku应用植入种子进行生产的数据。 当我运行heroku run rake db:seed命令时,出现错误,“ rake已中止!目录中没有此类文件”

我尝试创建自定义rake任务,但遇到相同的错误。

我的瑞克任务的开始如下:

require 'csv'
CSV.foreach("/Users/username/Documents/Apps Folder/myapp/seed_file.txt") do |row|
   ...
end

不知道我的问题是我的CSV文件位于何处,还是其他问题,我已经查看了关于stackoverflow的其他相关问题,但他们无法解决我的问题。 有谁知道如何解决这个问题?

编辑:当我尝试运行以下自定义rake任务时,我添加了在终端中收到的错误消息:

Running `rake customraketask` attached to terminal... up, run.8243
rake aborted!
No such file or directory -/Users/username/Documents/Apps Folder/myapp/app/assets/files/seed_file.txt
/app/lib/tasks/customraketask.rake:13:in `block in <top (required)>'
Tasks: TOP => customraketask
(See full trace by running task with --trace)

无需输入文件的当前路径(看起来是OSX的文件目录结构,请尝试执行类似

File.expand_path("../../seed_file.txt", __FILE__)

它将为您提供相对于当前文件的路径,并与../../seed_file.txt路径连接并经过处理将返回实际的absolute path 如果您的文件位于db/seeds.rb ,您可能会看到的是: /home/username/Apps Folder/my_app/seed_file.txt

有关__FILE__更多信息,请参见前面的问题

编辑 :由于您的文件路径中有空格,请尝试以下操作:

require 'shellwords'
File.expand_path("../seed_file.txt", __FILE__).shellescape

编辑#2 :我认为您误解了我的答案。 在这里,我将使用另一种方法重新解释它。

因此,如果我的文件目录如下所示:

├───App
|   └───db
|       ├───seeds.rb
|   ├───seed_file.txt

然后,将其输入到seed.rb文件中

# seeds.rb
CSV.foreach( File.join(File.dirname(__FILE__), '../seed_file.txt') ) do |row|
    puts row
end

如果仔细阅读错误消息,您将意识到Heroku将没有/Users/username ...目录。

尝试改用CSV.foreach("./seed_file.txt")

从文件路径来看,您似乎正在尝试从位于本地系统而非Heroku的文件中播种。 Rails应用程序的db文件夹中应该有一个seed.rb文件,您可以在其中配置数据库种子。 尝试将您的seed_file.txt添加到rails项目文件夹中,可能是app > assets > files > seed_file.txt或类似名称,然后改为引用该文件路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM