【发布时间】:2011-11-15 10:20:08
【问题描述】:
我正在使用 ruby 1.9.2 和 Rails 3.0.7。我编写了 ruby 后端脚本,它将使用 cron 作业每隔 15 分钟创建一个 CSV 文件。
后端 ruby 脚本:
CSV.open("count.csv", 'wb',:col_sep=>',') do |csv|
# header row
csv << ['id', 'count']
models = Model.all
models.each do |obj|
csv << [ obj.id, obj.get_count]
end
end
从上面的脚本 CSV 文件(count.csv)成功创建。在 Rails 应用程序中,
CSV.foreach("count.csv", :quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true) do |row|
count = row["count"].to_i if row["id"].to_i == @id
end
我需要从该 CSV 文件中解析计数值。但问题是当 cron 执行时,我无法从该 CSV 文件中获取计数值,所有记录都返回零,执行完成后我可以获得计数值。但是无论cron执行是停止还是开始,我都需要计数值,有人可以帮我解决或提出任何建议吗?提前致谢。
【问题讨论】:
-
您的代码对我来说看起来不错。你确定
@id已经初始化了吗? -
@daniel - 是的,我已经初始化了。该问题发生在 ruby 脚本执行期间。在 Rails 报告方面,我得到所有数据的零值。我不知道它是怎么发生的?有什么猜测吗?
-
你为什么要做这一切而不是简单地在 Rails 中调用
obj.get_count? -
你检查
count.csv的权限了吗?位置怎么样?你能用File.open打开阅读吗? -
在 Heroku 上你不知道。为什么要为 CSV 烦恼呢?为什么不向您的数据库添加一个额外的表?
标签: ruby-on-rails ruby ruby-on-rails-3 csv