私はコマンドラインからC++実行ファイルを実行するRailsアプリケーションを持っています。私はコマンドラインにC++ cout
を印刷することができますが、それを変数、つまりコントローラのoutput =
に戻したいと思います。C++実行可能ファイルからRailsアプリケーションに値を渡すには?
これは可能ですか?
以下は、私のRailsコントローラアクションの簡略化した例と、その説明に役立つC++ .cpp
です。
Railsのコントローラ:
def get_variable
system("cd ~/workspace/OutputTest/src && ./output.bin")
end
注私はすでにコンパイルされ、output.bin
という名前のC++の実行可能ファイルを作成しました。
C++ファイル:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!!!";
return 0;
}
私は(必ずしもコマンドラインからRailsのを介してファイルを実行していない)のRailsに精通んだけど、C++への完全な初心者くさいです。
ご指摘いただければ幸いです。私が完全に取るべき別のアプローチがあるなら、それはまた知ることに非常に役立つでしょう。
この初期段階を解決できたら、私はC++でさらに多くのことをしたいので、このインラインではしたくないです。
UPDATE
私がこれまでC++で.txt
に文字列を書き込み、その後、RailsのでFile.read()
を使用しているを作ってみた最適なソリューション。しかし、スケーラビリティを感じたり、データ構造に柔軟性を与えることはできません。
私はまだ、Railsがアクセスするためのメモリ内の値をどうにかして保持するなど、より簡単な方法があるのか疑問に思っています。確かに。
多分この1つです:http://stackoverflow.com/questions/690151/getting-output-of-system-calls-in-ruby?しかし、とにかくこれは悪いデザインかもしれないと思うかもしれませんし、あなたはルビーにCの関数をラップするswigのようなRPCまたはCからRubyラッパーを見たいかもしれません。 – lz96
もう1つの解決策は、Railsでリスナーソケットを作成してから、このソケットにデータを送信することです。 –