отправлять данные из файла irb на ruby ​​по рельсам - PullRequest
0 голосов
/ 28 декабря 2010

Я работаю над проектом, который включает RFID-считыватель.Я написал простой файл .rb, который читает метку RFID и выводит uid.Теперь я хочу получить эти данные в моем приложении Ruby on Rails (2.3.x).Я действительно понятия не имею, как это сделать.Другая проблема заключается в том, что мне нужны данные в определенных точках, например: я регистрирую пользователя и хочу связать uid RFID-тега с этим пользователем.Как я могу это сделать?Должен ли я использовать машину событий?или просто требует .rb файл в моем приложении?

.rb script (этот скрипт выводит uid. Как мне отправить его в мое приложение ror (2.3.x)?

require 'rubygems'
 require 'nfc'
 NFC.instance.find do |tag|
    p tag.uid
end

Спасибо.

1 Ответ

2 голосов
/ 28 декабря 2010

Кажется, что у вас есть две части вашего приложения - веб-интерфейс с поддержкой вашего сервиса и аппаратный интерфейс, который связывает пользователя с физическим устройством. Возможно, я ошибаюсь, но я сомневаюсь, что при развертывании приложения вы ожидаете, что пользователь перейдет в ваш центр обработки данных для сканирования в своем теге!

Я вижу очевидное разделение - вам необходимо иметь считыватель RFID физически рядом с пользователем, чтобы он мог махать меткой RFID перед считывателем и выполнять какие-то действия, а затем вторую часть, где пользователь находится в дома и не имеет доступа к считывателю RFID.

Я бы предложил хранить эти две части как отдельные приложения и иметь некоторую логику, которая связывает несколько RFID с пользователем. В Rails / Active Record у вас может быть модель User и ассоциация has_many с тегом.

Вам необходимо создать два приложения - приложение Rails и легкое настольное приложение. Настольное приложение запускается локально на вашем «сканирующем» компьютере. Начать с этого может быть демон: посмотрите гемы "daemon", "daemonize" и "daemon-kit".

В вашем приложении Rails вы затем создаете маршрут для создания связи между пользователем и меткой RFID. Например. POST для / users /: id / tags

Небольшое приложение, которое вы написали выше, должно отправить POST по этому адресу. Но как приложение узнает, с каким именем пользователя ассоциируется тег? Не зная точно, что ты делаешь, я не могу советовать. После распознавания 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
...