2010-11-16 22 views
1

J'utilise la gemme SimpleForm de Rails, mais je pense que ma question peut s'appliquer à n'importe quelle gemme.Personnaliser/Surpasser les rails SimpleForm Gem

https://github.com/plataformatec/simple_form

Il a beaucoup de fonctionnalités et de personnalisation, mais je suis à la recherche d'aller un peu plus loin. Par exemple, je souhaite vraiment que le balisage généré n'ait pas de classes par défaut insérées dans celui-ci, mais j'aimerais toujours avoir la possibilité d'insérer le mien manuellement. J'ai trouvé que je pouvais supprimer certaines classes en commentant les lignes dans les fichiers gem. Cependant ceci est en dehors de mon projet - je voudrais une solution sèche qui restera avec mon projet quand je déploie en production, de préférence sans avoir à emballer tous mes gemmes. J'imagine que c'est une situation courante qui pourrait s'appliquer à n'importe quelle gemme, et je devrais être en mesure d'écraser une gemme en totalité ou en partie probablement en ajoutant des fichiers de douane dans mon projet qui remplacent la gemme ... mais je ne suis pas sûr comment.

Toute aide serait appréciée! Merci.

+0

créez un patch au gem simple_form avec vos caractéristiques et proposez-le. – shingara

+0

Hmmm. J'avais pensé à cela mais je pense qu'ils ont les caractéristiques que je ne préfère pas pour une raison spécifique. En outre, je pense qu'apprendre à passer outre certains aspects d'une gemme m'aidera à en apprendre davantage sur Ruby! Merci quand même. – blastula

Répondre

0

Parlez-vous de monkey patching? Supposons que votre bijou a une classe dans un fichier

# simple_form_gem/lib/some_file.rb 
class A 
    def some_method 
    puts 'A' 
    end 
end 

Si vous voulez changer la sortie de #some_method vous pouvez créer un fichier d'initialisation et de faire

# config/initializers/my_monkey_patch_for_simple_form_gem.rb 
class A 
    def some_method 
    puts 'duck punching' 
    end 
end 

Votre patch singe n'affectera A # some_method, et pas d'autres méthodes dans A. Assurez-vous simplement que la sortie de votre patch singe ne cassera pas quelque chose d'autre dans la gemme.

+0

Ah ah! J'ai essayé de faire la même chose et de le mettre en lib ... c'est tout à fait logique. Merci! – blastula