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