J'ai construit une application de petits rails et j'ai un script ruby que je voudrais exécuter en arrière-plan de mon application. Actuellement, ce code est placé dans mon répertoire lib (lib/tweetstreamer.rb). Quel est le moyen le plus simple d'accomplir cette tâche tout en continuant à exécuter le code en arrière-plan? Aurais-je besoin d'utiliser un type de commande dans mon contrôleur d'application? J'ai trouvé que lorsque j'utilise "rails runner path/to/tweetstreamer.rb" mon script fonctionne parfaitement.Rails 5 applications exécutant des tâches en arrière-plan
tweetstreamer.rb peut être vu ci-dessous
require 'tweetstream'
require 'twitter'
require 'mixpanel-ruby'
TweetStream.configure do |conf|
conf.consumer_key = "XXXXXXX"
conf.consumer_secret = "XXXXXXX"
conf.oauth_token = "XXXXXXX"
conf.oauth_token_secret = "XXXXXXX"
conf.auth_method = :oauth
end
@store_account = Twitter::REST::Client.new do |config|
config.consumer_key = "XXXXXXX"
config.consumer_secret = "XXXXXXX"
config.access_token = "XXXXXXX"
config.access_token_secret = "XXXXXXX"
end
client = TweetStream::Client.new
client.track('mysampletweet') do |status|
msg = status.text
tag = "#mysampletweet"
puts msg
puts tag
if msg.include? tag
message = "@#{status.user.screen_name} Happy Holidays from @myaccountname!"
sleep 5
@store_account.update(message, in_reply_to_status_id: status.id)
end
@tracker = Mixpanel::Tracker.new("XXXXXXX")
@tracker.track(status.id, 'Tweets Received', { 'Hashtag' => tag, 'Message' => msg })
puts 'Your code ran'
end
La réponse sur Cela dépend de la configuration de votre serveur de production. Mais essentiellement, cela impliquerait de le déléguer à un processus séparé et de le faire fonctionner à côté de votre application principale. Une façon de le faire serait de mettre cela dans une tâche de rake, puis d'appeler cette tâche pour démarrer un processus séparé. – Kelseydh
Ce code devrait fonctionner périodiquement ou devrait-il être déclenché à partir de l'application principale? –
@OleksandrAvoyants cela devrait être déclenché à partir de l'application principale. – Twhitt06