0

私のアプリケーションは2倍です。最初に、Arduino 出力を読み取るスレッドを実行してデータを取得し、モデルに保存します。Arduino は永遠にデータを感知しているので、それは永遠に行われます。次に、メインの Web アプリケーションがデータを分析し、洗練されたグラフを描画します。

Rails サーバーを起動するときに、読み取りスレッドを 1 回だけ実行したいと考えています。

私の現在の実装は、アプリケーションのメインコントローラーのスレッドを使用しています (データを保存するモデルが必要なため)。ページを更新するたびに、新しいスレッドが作成されます。これは、Arduino への同時アクセスが誤った読み取り値を作成するため、私が望むものではありません。

これはかなり古典的な問題だと思いますが、Rails でその動作を取得する方法がわかりません。私は今、1週間探してグーグルで検索していますが、まだ立ち往生しています。

前もって感謝します。ピエール

4

2 に答える 2

1

仕事のための間違ったツール。すこし。Rails アプリで Arduino の出力を監視する必要はありません。rails は実際にはそのようなことには対応していません。別の専用アプリで Arduino の出力を読み取り、その情報をデータベースに保存するのが最善です。

Arduino 出力 ---> アプリケーション解析出力 ---> DB ---> Rails アプリ

このようにして、Web アプリケーションは Web に集中でき、ジョブ間で引き裂かれることはありません。

これを行う興味深い方法は、解析アプリケーションを ruby​​ アプリにして、このインスタンスでは Rails の外部で Active Record を使用することです。私はやったことはありませんが、純粋な Ruby アプリの同様の設定で Active Record を使用したことがあります。これは古い例です。

http://blog.aizatto.com/2007/05/21/activerecord-without-rails/

これにより、Rails アプリを再デプロイしたときにもデータを収集できます。また、ファイアウォールを作成するため、Rails アプリが爆発したりダウンしたりしても、データ収集は影響を受けません。

于 2013-03-31T20:27:41.537 に答える