5

Je voulais créer un générateur qui créerait des fichiers (et des répertoires, etc ...) basé sur des fichiers déjà existants dans l'application (par exemple, les vues ou les contrôleurs). Donc, si nous avions des vues mis en place comme celui-ciRails Generator: générer des fichiers basés sur des fichiers rails déjà existants

-app 
    -views 
     - layouts 
      - application.html.erb 
     - users 
      - index.html.erb 
      - show.html.erb 
      - etc ... 

et je voulais créer des fichiers basés sur eux, je peux le faire (avec juste rubis)

directories = Dir.entries("#{Rails.root}/app/views") 
directories.each do |directory| 
    unless directory == "." or directory == ".." 
    files = Dir.entries("#{Rails.root}/app/views/#{directory}") 
    files.each do |file| 
     unless file == "." or file == ".." 
     text = File.read("#{Rails.root}/app/views/#{directory}/#{file}")  
     something #=> whatever else needs to go here to edit the file 
     something else #=> output_file.puts whatever 
     end 
    end 
    end 
end 

c'est donc en gros ce que je voudrais faire avec un générateur afin que je puisse rouler mon code dans un plugin et l'utiliser pour d'autres applications.

Première question, Comment générer des fichiers arbitraires (avec des noms de fichiers basés sur des noms de fichiers existants utilisant le générateur) Est-il approprié de parcourir les répertoires comme je l'ai fait ci-dessus, saisir le répertoire/fichier et générer des fichiers? une façon de faire ce que je n'utilisant une méthode plus simple (le mien semble facilement cassable).

aussi, dois-je mettre tout ce que lire/format/code écriture l'intérieur du générateur se et juste passer une chaîne dans la "initialize content" section de create_file ou devrais-je le mettre ailleurs ou dois-je utiliser le générateur pour créer les fichiers nus et popul l'a mangé avec un script d'initialisation?

Y a-t-il un plus rails rails de type de remplissage des fichiers générés, ou devrais-je juste pousser tout mon code de formatage à l'intérieur du générateur. Si oui, quelle est la manière appropriée d'aborder cela.

+0

Votre question se termine très brusquement "Si oui, quel est le". Avez-vous plus à ajouter? –

Répondre

5

Je ne sais pas si vous voulez savoir comment les générateurs sont construits dans rails3 ou non. Le code que vous montrez n'est pas très semblable à un générateur. Dans les générateurs, vous pouvez utiliser toutes les commandes de Thor, qui vous offre un très puissant jeu d'outils de manipulation de fichiers et d'injection de code (chaînes) dans des classes ou des fichiers. Donc, je remplirais certainement vos fichiers à l'intérieur d'un générateur, parce que cela arrive à la demande de l'utilisateur, et l'utilisateur peut choisir si certains fichiers ont besoin ou peuvent être remplacés ou non.

À l'intérieur de votre gemme, vous aurez un dossier lib/generators, contenant un dossier templates, contenant tous les fichiers que vous pourriez vouloir placer dans l'application rails.

À partir de la documentation de Thor, voici a nice example pour construire des fichiers dans un générateur.

Espérons que cela aide.

1

Il existe une API simple pour utiliser des générateurs dans Rails. Vous pouvez trouver un bon guide:

http://guides.rubyonrails.org/generators.html

si vous voulez vérifier un code:

https://github.com/coderloop/tamed_beast (je suis l'auteur de ses générateurs)

https://github.com/pilu/web-app-theme (un autre exemple propre)

+0

quelqu'un a downvoted ma réponse. Qu'est ce qui ne va pas avec ça? –

+2

Ce n'est pas moi qui ai voté contre votre réponse mais je dirais qu'elle a été déclassée parce que ce sont 3 liens vers d'autres sites sans contenu réel. Avec la nature parfois transitoire des liens externes, cette réponse pourrait se résumer à un ensemble de liens morts. –

+0

@Steve: merci pour votre explication. ce n'est pas mon habitude de blinldy coller des liens. dans ce cas, considérant que la solution n'est pas * facile * à intégrer dans une réponse complète, j'ai collé un guide complet avec quelques exemples réels (et simples) pour montrer comment travailler avec des générateurs de rails. Je suis l'auteur des générateurs de tamed_beast, donc je peux fournir plus d'aide si nécessaire. –

Questions connexes