IRBファイルからデータをRuby on Railsに送信します
-
13-10-2019 - |
質問
RFIDリーダーを含むプロジェクトに取り組んでいます。 RFIDタグを読み取り、UIDを出力するシンプルな.RBファイルを書きました。私が今やりたいのは、そのデータをRuby on Railsアプリケーション(2.3.x)に取得することです。私はこれを行う方法について本当に知りません。別の問題は、特定のポイントでデータが必要であることです。例:ユーザーを登録し、RFIDタグのUIDをこのユーザーと一緒にアソシエイトにしたいということです。それ、どうやったら出来るの?イベントマシンを使用する必要がありますか?または、私のアプリケーションに.RBファイルが必要ですか?
.RBスクリプト(このスクリプトはUIDを出力します。ROR(2.3.x)アプリに送信するにはどうすればよいですか?
require 'rubygems'
require 'nfc'
NFC.instance.find do |tag|
p tag.uid
end
ありがとう。
解決
アプリケーションに2つの部分があるようです。サービスへのWeb対応フロントエンドと、ユーザーを物理デバイスに関連付けるハードウェアフロントエンドです。私は間違っているかもしれませんが、アプリを展開すると、ユーザーがデータセンターに歩いてタグをスキャンすることが期待されるとは思いません。
私は明らかな分離を見ることができます - あなたはユーザーの近くに物理的にRFIDリーダーを持っている必要があり、彼らは読者の前でRFIDタグを振って何らかのアクションを実行し、そしてユーザーが自宅にいて持っている2番目の部分を実行することができますRFIDリーダーへのアクセスはありません。
これら2つの部分を個別のアプリケーションとして保持し、いくつかのRFIDをユーザーに関連付けるロジックを持つことをお勧めします。 Rails / Active Recordでは、ユーザーモデルとタグにhas_many関連がある場合があります。
Railsアプリの2つのアプリケーションと、軽量のデスクトップアプリケーションを作成する必要があります。デスクトップアプリケーションは、「スキャン」マシンでローカルに実行されます。それから始めるためには、デーモンになる可能性があります。「デーモン」、「デーモン化」、「デーモンキット」の宝石を見てください。
Railsアプリでは、ユーザーとRFIDタグの間の関連性を作成するためのルートを作成します。例えば。 /users/:id/tagsを投稿します
上記の小さなアプリケーションは、そのアドレスに投稿を送信する必要があります。しかし、アプリケーションは、タグを関連付けるためのユーザー名をどのように把握していますか?あなたが何をしているのかを正確に知らずに、私はアドバイスすることはできません。 RFIDを認識した後、ユーザー名(STDIN.GETS)を要求してコマンドラインに入力するか、より複雑なアプリケーションで、一意であり、スキャンアプリケーションからGETを介して読み取られるある種のトークンを生成できます。 。
例えば。これをデーモンとして実行して、RFIDタグをユーザーに関連付けることができます。
require 'rubygems'
require 'nfc'
require 'httparty'
class TagAssociator
include HTTParty
base_uri 'example.com'
end
NFC.instance.find do |tag|
puts "What is your username?"
username = STDIN.gets
TagAssociator.post('/users/#{username}/tags', :query => {:uid => tag.uid})
end