Ruby on Rails:从db中提取文件,分析它,结果保存在db中

时间:2012-11-16 18:59:51

标签: ruby-on-rails

我正在使用this file upload example上传数据库中的一些文件。我有一个带有r-script的rruby.rb,它对文件进行统计分析(将其命名为A),结果它将一个图保存在文件A所在的目录中。 我需要的是从数据库中提取文件,进行分析并将绘图保存回数据库。  我应该在哪里放置rruby.rb的代码?在uploads_controllerupload.rb

1 个答案:

答案 0 :(得分:0)

我会将rruby.rb文件分开并按原样使用它。但是在哪里放置该文件?

有两个同样有效的选项。您可以将其放在lib文件夹中,也可以将其放在models文件夹中。

如果我考虑更多通用和我碰巧需要的代码,我会把它放在lib文件夹中。 lib中的代码是最终可以转换为gem的代码。我认为代码与任何业务代码或模型完全无关。

如果代码与我的业务领域和其他模型密切相关。

因此,在您的情况下,我会将rruby文件放在lib文件夹中(因为我理解正确)它包含一个非常孤立的过程,不依赖于其余的代码,只需要一个文件作为输入,并将生成一个文件作为输出。

rruby代码分开的另一个好处是你也可以单独测试它。

希望这有帮助。

[编辑:添加了示例实现]

我认为你的rruby是一个简单的脚本,所以你将它包装在一个模块中,因为它执行统计分析我称之为Statistical,但你应该给它一个更合适的名字

所以在lib/statistical.rb

module Statistical

  def self.do_analysis(file_to_analyse)
    # .. do a lot of stuff and return a result-file
  end
end

然后在您的uploadscontroller或uploads模型中,您可以执行类似

的操作
result_file = Statistical.do_analysis(uploaded_file)

通常lib内的所有文件都会自动添加到rails load-path中,所以这就是你需要做的。