Использование именованных каналов в Rails - PullRequest
0 голосов
/ 26 марта 2010

Мне нужно прочитать и записать некоторые данные через именованные каналы.

Я проверил его в простом приложении на Ruby, и оно прекрасно работает.

Но я не знаю, куда мне положить это в моем приложении Rails? Я слышал о задачах Rake, но я не уверен, что это правильное решение.

Мне нужно открыть pipe-файл и прослушать данные. Если есть, мне нужно обработать его и сделать DB-запрос. Затем запишите некоторые данные в другой канал. Я знаю, как это работает, но единственная проблема - как запустить его с Rails? Приведите, пожалуйста, несколько примеров.

1 Ответ

1 голос
/ 26 марта 2010

Похоже, у вас есть веб-сайт с внутренним источником данных, которые вы передаете по каналу. Также звучит так, как будто это не будет частью цикла HTTP-запросов / ответов, что может сделать задачу rake хорошим выбором.

Создайте файл в lib / tasks с именем listener.rake

это должно выглядеть так:

desc 'Listens to pipe and does stuff'
task :listen_to_pipe => :environment do
  puts "Listen to Pipe starting"
  #open pipe
  #loop to listen to it
    puts "going to do stuff"
    #do stuff
  #end
end

Затем из командной строки в корневом каталоге вашего проекта вы можете вызвать его следующим образом:

rake listen_to_pipe

и для другой среды сделайте это:

rake listen_to_pipe RAILS_ENV=production

Это задание будет иметь доступ ко всем вашим моделям. Чтобы закончить, нажмите Ctrl + C

Имейте в виду, что вам нужно будет остановить и перезапустить процесс, чтобы загрузить любые изменения, внесенные в модели.

...