11
votes

Quelle est la meilleure façon de faire de plusieurs besoins en rubis?

Je ne suis pas sûr que j'ai vu cela adressé, mais je me demande quelle est la meilleure façon de faire de plusieurs besoins dans un script rubis. Je suis arrivé avec quelques exemples rudimentaires que je vais décrire ci-dessous, mais je ne suis pas sûr de savoir s'il y a une meilleure pratique pour cela - mes résultats de la recherche sont revenus sans rien.

0) tasse d'inclut et d'exceptions (Je laisserai la sauvetage) xxx

1) grord de chaîne xxx

2) ??

Y a-t-il un gros problème créé à partir de tout le charger d'un tableau à chaîne? Vous pouvez spécifier des exigences ou des emplacements de version de la même manière, je me demandais simplement s'il y a un problème avec le faire de cette façon.


2 commentaires

Vous ne dites pas pourquoi juste faire "exiger" xxx "" semble être le mauvais moyen d'y aller. Allez-vous être conditionnellement nécessitant des modules? Après avoir défini cette charge en raison de dépendances mutuelles? Différences de plate-forme? En outre, votre bloc "Rescue" sert principalement de permettre à un script d'essayer de courir même si toutes les exigences ne sont pas là; C'est à peu près une bonne idée.


Désolé, j'ai laissé sortir la ligne "sortie" qui arrête le script, je l'éditerai. Il semble que je puisse sauve des lignes lorsque j'ai beaucoup de pierres précieuses dans un script, s'il n'y a pas de problèmes (outils d'analyse de code, officiel Directives de style de code, etc.).


5 Réponses :


17
votes

Tous les scripts de rubis que j'ai vus juste en réalité, il suffit d'avoir besoin par ligne comme si vous avez d'abord.

require 'rubygems'
require 'rack'
require 'rails'


1 commentaires

C'est ce que je recommanderais aussi. C'est simple, concis, et pas trop difficile à regarder. Utilisez RubyGems et Bundler pour gérer des gemmes au lieu d'essayer de rouler votre propre solution.



5
votes

Dans le premier, il est clair ce que vous faites.

dans la seconde, il faut que quelqu'un décoder ce que vous faites.

Il semble un peu fantastique de forcer tout le monde à décoder ce que vous faites pour que vous puissiez enregistrer quelques lignes de taper (et que si vous utilisez un grand nombre de bibliothèques dans un fichier source qui est un peu un peu code sentence et en soi). N'oubliez pas que le code est lu un ordre de grandeur ou trois fois plus souvent que celui-ci. Si c'est un choix entre une écriture facile ou une lecture facile, la lecture devrait gagner.


0 commentaires

17
votes

La voie brillante est la meilleure façon.

Vous pouvez le faire, mais il négocie la clarté pour l'intelligence - une mauvaise baisse: xxx

Passer le "sauvetage "Avec le message d'erreur de fantaisie. Tout le monde sait ce que cela signifie lorsqu'il nécessite une trace de pile.

Si vous souhaitez faciliter la tâche de quelqu'un en utilisant votre programme d'avoir les gemmes requises installées, consultez Bundler . < / p>


2 commentaires

+1 "Métiers Clarity for Cleverness - une bonne affaire", ou, comme on disent dans l'onglet spinal ", il y a une fine ligne entre l'intelligence et la stupidité."


Wow. Pendant que je ne voudrais jamais infliger cela sur quelqu'un d'autre, c'est vraiment intelligent! Pour quiconque voulant une ventilation (et s'il vous plaît, corrigez-moi si je me trompe), méthode renvoie une méthode objet objet et l'ampersand appelle to_proc , quel chaque utilise ensuite comme bloc. La signature de méthode est utilisée comme paramètres de blocs, ce qui transforme l'appelant dans la callee. C'est-à-dire que ['rubygems']. Chacun (&: exiger) appelle 'rubygems'.require () , ["rubygems']. Chaque (et méthode (: exiger)) appellerait ['rubygems']. Chacun fait | Dépendance | / * nécessite la mise en œuvre * / fin . Super soigné. Merci!



0
votes
def require_all(gems) ; gems.each { |gem| require gem } ; end
...
require_all %w(rubygems rack rails)

0 commentaires

0
votes

Ce n'est pas le meilleur, mais si vous le faites:

require_all 'rack', 'bundler', 'rails'


0 commentaires