我正在使用这个文件上传示例来上传数据库中的一些文件。我有一个带有 r-script 的 rruby.rb,它对文件(命名为 A)进行统计分析,因此它在文件 A 所在的目录中保存了一个绘图。我需要的是从数据库中提取文件,进行分析并将绘图保存回数据库。我应该将 rruby.rb 的代码放在哪里?在uploads_controller,upload.rb?
问问题
186 次
1 回答
0
我会将rruby.rb
文件分开并按原样使用。但是该文件放在哪里呢?
有两个同样有效的选项。要么放在lib
文件夹里,要么放在models
文件夹里。
lib
如果我考虑到更通用的代码和我碰巧需要的代码,我会将它放在文件夹中。代码输入lib
是最终可以变成宝石的代码。这是我认为与任何业务代码或模型完全无关的代码。
如果代码与我的业务领域和其他模型密切相关。
因此,在您的情况下,我会将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
然后在您的上传控制器或上传模型中,您执行类似的操作
result_file = Statistical.do_analysis(uploaded_file)
通常,其中的所有文件都会lib
自动添加到 rails load-path,所以这就是你需要做的。
于 2012-11-16T19:22:00.480 回答