Ruby on rails RubyonRails:从数据库中提取文件,进行分析,结果保存在数据库中

Ruby on rails RubyonRails:从数据库中提取文件,进行分析,结果保存在数据库中,ruby-on-rails,Ruby On Rails,我正在使用上载数据库中的一些文件。我有一个带有r脚本的rruby.rb,它对文件(命名为a)进行统计分析,因此它在文件a所在的目录中保存了一个绘图。 我需要的是从数据库中提取文件,进行分析并将绘图保存回数据库。 我应该将rruby.rb?的代码放在何处 我会将rruby.rb文件分开并按原样使用。但是把文件放在哪里呢 有两个同样有效的选择。您可以将其放置在lib文件夹中,也可以将其放置在models文件夹中 如果我考虑更多的泛型和我需要的代码,我会把它放在 LIB 文件夹中。lib中的代码是最终

我正在使用上载数据库中的一些文件。我有一个带有r脚本的rruby.rb,它对文件(命名为a)进行统计分析,因此它在文件a所在的目录中保存了一个绘图。 我需要的是从数据库中提取文件,进行分析并将绘图保存回数据库。
我应该将rruby.rb?的代码放在何处

我会将
rruby.rb
文件分开并按原样使用。但是把文件放在哪里呢

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

如果我考虑更多的泛型和我需要的代码,我会把它放在<代码> LIB <代码>文件夹中。lib中的代码是最终可以变成宝石的代码。它是我认为与任何业务代码或模型完全无关的代码。 如果代码与我的业务领域和其他模型密切相关

因此,在您的例子中,我将把
rruby
文件放在
lib
文件夹中,因为(如果我理解正确的话)它包含一个非常独立的过程,不依赖于代码的其余部分,只需要一个文件作为输入,并将生成一个文件作为输出

代码分开的另一个好处是,您也可以单独测试它

希望这有帮助

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

我假设您的
rruby
是一个简单的脚本,因此您将其包装在一个模块中,因为它执行统计分析,我称之为
statistic
,但您应该给它一个更合适的名称

所以在
lib/statistical.rb
write中

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加载路径,所以这就是您需要做的全部工作。

Ok。然后我将其单独放置在lib文件夹中。从那里我怎么称呼它?当创建新的上载时,我是否应该从我的uploads_controller.rb调用它(文件上载后,分析应该立即存在)?如何从uploads_controller.rb中的lib文件夹调用rruby.rb?是的。它是完美的,但我还有一个小问题。这是我的rruby.r最简单的版本。require“rinruby”R.quit myr=rinruby.new(echo=false)myr.filename=“myplot”myr.eval因此,实际上R脚本不会返回文件,它会生成保存在某处的绘图(在命令行中运行rruby.rb时)。当我在ruby on rails upload项目中键入所有内容时,我不知道它将在何处保存绘图,以及如何将此绘图保存到数据库中。我看到你是rinruby,也许更有趣的是:我在文档中看到他们可以将绘图生成为文件。那有用吗?我希望如此。如果它不起作用或者我有问题,我会把它们贴在这里。非常感谢你。