J'essaie d'utiliser Grape pour créer une API en utilisant uniquement des objets Ruby. Je ne veux pas utiliser une base de données/Rails/ActiveSupport/etc - juste Rack, Ruby et Grape.Utilisation de Grape pour créer une API avec seulement des objets Ruby au lieu d'une base de données ou Rails
J'ai défini une classe pour un Directory
avec laquelle je veux interagir via l'API. Donc, Directory#sort_by("last_name")
renvoie les données JSON avec une liste d'objets People
dans mon Directory
. J'ai aussi une méthode Directory#create_person(attributes)
qui prend une chaîne et l'utilise pour ajouter Person
objets au Directory
. Le répertoire est peuplé de personnes lors de la création.
Je suis nouveau à travailler avec Rack and Grape, donc je ne sais pas où/comment créer mon objet Directory
et le rendre accessible via les GET/POST dans ma classe API Grape. En utilisant une variable de classe à l'intérieur de cette classe semble fonctionner, i.e.,:.
module API
class DirectoryAPI < Grape::API
format 'json'
@@directory = Directory.new("1.txt", "2.txt", "3.txt")
get 'last_name' do
@@directory.sort_by("last_name")
end
end
end
mais en utilisant des variables de classe semble juste mal. Existe-t-il une meilleure façon de créer mon objet Directory
? Peut-être dans mon fichier config.ru
? Ou pourrais-je le faire à travers une méthode de classe à l'intérieur de Directory
en quelque sorte?
Cela semble bon, mais je ne pense pas qu'il répond à la question. OP pose des questions sur le code dans le contrôleur, pas comment créer une classe de gestion de données. Ce qui vous manque est de montrer comment il serait utilisé dans le contrôleur. Peut-être une ligne comme 'Store.records' à la place de la ligne de l'OP' @@ directory.sort_by ("last_name") '? –
Merci, @NeilSlater. Je crois que la question essentielle de l'OP n'était pas «Que devrais-je faire dans mon contrôleur? mais "Comment dois-je accéder à mes données?" Néanmoins, j'ai édité ma réponse pour aller droit au but, à la fois sur les singletons et d'être avec nous à propos du défi de codage. – amar47shah