Essayez de créer une gemme basée sur bundler's official guide on developing a Ruby gem.Ruby: nécessite des travaux dans la gemme, échoue lors de l'exécution à partir de la source
Courir bundle gem foodie
va créer une structure et générer des fichiers dans le répertoire lib
:
- fin gourmet
- version.rb
- foodie.rb
fin gourmet. rb lit
require "foodie/version"
module Foodie
# Your code goes here...
end
Exécution ruby lib/foodie.rb
(ou aussi de répertoires différents) se traduira par
C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- foodie/versio
n (LoadError)
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from foodie.rb:1:in `<main>'
D'autre part l'installation de la pierre précieuse par rake install
et exigeant la pierre précieuse fonctionne très bien.
Fonctionne à partir de la source si require "foodie/version"
est remplacé par require_relative "foodie/version"
dans foodie.rb. Si je comprends
require
travaux basés sur des modulesrequire_relative
travaux basés sur la structure des répertoires
Pour moi, ce dernier de ressemble à un hack. Il ne serait plus judicieux de structurer votre code via des modules car il ne serait pas appliqué (peut-être que cela aurait encore du sens, mais vous pourriez faire des erreurs sans jamais le remarquer).
Mes questions sont les suivantes:
- Est-il possible de tester un petit bijou de la source sans l'installer en suivant la convention de Bundler (en utilisant
require
au lieu derequire_relative
)? - Pourquoi la gemme fonctionne-t-elle après l'installation?
- Existe-t-il une meilleure pratique pour l'utilisation de
require
,require_relative
, les modules, les fichiers et la structure générale?
Merci.
Veuillez scinder cette question en questions distinctes, parce que: 1. les trois questions que vous avez posées sont très différentes, et 2. elles seront plus utiles aux futurs lecteurs de cette façon. Merci! –
Merci pour les commentaires. Je l'ai demandé de cette façon parce que ces questions ont émergé du même problème/contexte - j'imagine que d'autres ont des questions similaires dans une situation similaire. Je pense que le même contexte est requis pour chaque question. Est-ce une bonne pratique de répéter le même contexte pour plusieurs questions? – thisismydesign