在 Rails 中打开 csv 文件服务器端 (heroku)



我有一个本地dev Rails环境,其中我的控制器中有以下代码:

  def csv_to_array(file)
    @comment_array = []
    CSV.foreach(file, :col_sep => ",", :headers => true) do |column|
      @comment_array << column['Phrase']
    end
    @comment_array
  end
csv_to_array('../hub/data/comment_file.csv')

这在我的本地环境中工作正常。它打开 csv 文件,并将其解析为数组。这里的根 rails 目录是 hub

但是 - 当我将此应用程序推送到 heroku 并尝试运行相同的代码服务器端时,它出错了,因为它找不到文件。如何打开 csv 文件服务器端?只是位置发生了变化,还是我错过了其他东西?

在本地环境中,您正在从 Rails 根目录运行 Ruby 进程。这就是为什么您可以使用'../hub/data/comment_file.csv'(或可能只是'./data/comment_file.csv'

但是,Heroku和许多其他主机将从其他位置运行它。

您必须指定文件的完整路径:

File.join(Rails.root, 'data/comment_file.csv')

最新更新