このファイル アップロードの例を使用して、データベースにいくつかのファイルをアップロードしています。ファイルの統計分析を行う r-script を含む rruby.rb があり (name it A) 、その結果、ファイル A があるディレクトリにプロットを保存します。必要なのは、データベースからファイルを抽出し、分析を行い、プロットをデータベースに保存することです。rruby.rb のコードはどこに配置すればよいですか? uploads_controller、upload.rbの中で?
1 に答える
ファイルをrruby.rb
分けてそのまま使います。しかし、そのファイルをどこに置くのでしょうか?
2 つの同等に有効なオプションがあります。lib
フォルダに配置するか、フォルダに配置しmodels
ます。
lib
たまたま必要な一般的なコードを検討する場合は、フォルダーに配置します。Code inlib
は、最終的に gem に変換できるコードです。これは、ビジネス コードやモデルとはまったく無関係であると私が考えるコードです。
コードが自分のビジネス ドメインや他のモデルと強く関連している場合。
したがって、あなたの場合、(私が正しく理解していれば)かなり分離された手順が含まれており、残りのコードに依存せず、入力としてファイルが必要であり、出力としてファイルを生成するため、ファイルをフォルダーにrruby
配置します。lib
コードを分離しておくことのもう 1 つの利点は、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 に自動的に追加されるため、これだけで十分です。