web-dev-qa-db-fra.com

Différence entre le gemme et exiger (exiger Open-Uri)

Je voulais juste comprendre pour moi-même.

J'utilise le gemme Nokogiri (pour analyse HTML). Si je me suis bien compris d'ouvrir des URL, j'ai besoin d'utiliser une méthode de la "Open-Uri" de la GEM.

Mais quand je l'incluais dans mon gemfile (sur la machine de Windows Developer):

gem 'open-uri' - Il y a une erreur lors de l'installation de paquet qu'il ne peut pas trouver de gemme.

Donc, si j'utilise require 'open-uri' - ça marche.

Alors peut-on expliquer ce qui se passe?

28
WHITECOLOR

Vous utilisez Bundler pour vos dépendances GEM et vous le faites correctement, mais Openuri fait partie de la Ruby Bibliothèque standard. C'est Pourquoi vous uniquement besoin de l'exiger si vous souhaitez l'utiliser dans votre code.

55
lucapette

require est utilisé pour charger un autre fichier et exécuter toutes ses déclarations. Cela sert à importer toutes les définitions de classe et de méthode dans le fichier. require conserve également une trace de laquelle les fichiers ont déjà été requis afin de ne pas l'exécuter deux fois.

Un rubygem est un package logiciel, communément appelé "gemme". Les gemmes contiennent un emballaged Ruby application ou bibliothèque. Le logiciel RubyGems lui-même vous permet de télécharger facilement, d'installer et de manipuler facilement des pierres précieuses sur votre système. - Qu'est-ce qu'un GEM? :

Le gemfile est ensuite utilisé par Bundler pour installer les gemmes spécifiées.

open-Uri n'est pas un gemme mais une partie de la Ruby Bibliothèque standard de sorte qu'il doit simplement être nécessaire.

9
jlundqvist