我有一个本地开发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文件服务器端?只是位置发生了变化,还是我还缺少其他东西?
答案 0 :(得分:2)
在本地环境中,您正在从Rails根目录运行Ruby进程。这就是您可以使用'../hub/data/comment_file.csv'
(或可能只是'./data/comment_file.csv'
然而,Heroku和许多其他主机将从其他位置运行它。
您必须指定文件的完整路径:
File.join(Rails.root, 'data/comment_file.csv')