J'écris mon premier plugin de rails et je pourrais utiliser un peu d'aide. D'une manière très simplifiée, je voudrais permettre au développeur de spécifier une valeur que je peux compter à travers une tâche de rake. Je pense à quelque chose comme ça ...Écrire un plugin ActiveRecord pour Rails
class User < ActiveRecord::Base
monitor "Users", count
monitor "Active Users", count("activated_at != NULL")
end
- Je suppose que le moniteur doit être une méthode de classe de ActiveRecord :: Base mais comment/où dois-je préciser dans mon plug-in?
- L'argument de la fonction
monitor
ne doit pas être la valeur mais un bloc de code à exécuter. Je ne suis pas sûr de la meilleure façon de le spécifier et de garder la syntaxe simple. Peut-être que ce seramonitor "Active Users", {count "activated_at != NULL"}
? - Je préférerais que le développeur n'ait pas à spécifier
User.count
, justecount
, c'est-à-dire qu'il récupère automatiquement la classe (et les blocs seront appelés sur la classe et non sur l'instance). Si ce n'est pas possible, je suppose qu'il n'y a aucune raison de mettre les instructions du moniteur dans le modèle (voir # 5). - Le comptage réel de ces valeurs (c'est-à-dire, l'exécution des blocs) sera effectué par une tâche rake hors ligne. Que devrait faire la fonction
monitor
pour rendre ces blocs disponibles pour la tâche rake? Les stocker dans une variable de classe? - Peut-être que les instructions de surveillance n'ont pas besoin d'être spécifiées dans le modèle. Peut-être que ça encombre le site, donc je serais heureux de trouver d'autres endroits pour les mettre.
Je ne fais que dessiner mes idées en ce moment et essayer de comprendre ce qui est/n'est pas possible dans Ruby. Toute aide appréciée.
Mise à jour: Je vais essayer d'être plus clair sur le but du plugin. Je veux que le développeur soit capable de définir des mesures qui devraient être surveillées par la tâche rake. La tâche rake va parcourir ces métriques et écrire les valeurs dans un fichier (j'ai un peu simplifié). La tâche de rake sera très simple, quelque chose comme rake monitors:update
(à savoir, pas params nécessaire)
Merci, vous avez raison sur le SQL - c'était juste un exemple. Je pense que named_scopes sera très utile mais cela ne résoudra pas tout à fait mon problème. J'ai mis à jour la question avec plus d'informations sur ce que le plugin essaie d'atteindre. – ideasasylum