require lib dans RSpec avec Ruby 1.9.2 apporte "pas un tel fichier à charger"
Je suis en train de mettre à jour l'un de mes Rails de projets à Ruby 1.9.2
. Tout est allé très bien, mais un RSpec test s'est cassé. Dans ce test, j'ai require
un Rubis lib
:
# file spec/models/my_lib_spec.rb
require 'spec_helper'
require 'lib/services/my_lib'
describe "MyLib" do
it "should do something" do
...
La lib ressemble à ceci:
# file lib/services/my_lib.rb
class MyLib
def self.do_something
...
En Ruby 1.8.7 (REE), le test a bien fonctionné:
$ ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin11.1.0], MBARI 0x6770, Ruby
Enterprise Edition 2011.03
$ rspec ./spec/models/my_lib_spec.rb
..
Finished in 1.4 seconds
2 examples, 0 failures
En Ruby 1.9.2 j'obtiens une Erreur no such file to load
:
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.1.0]
$ rspec ./spec/models/my_lib_spec.rb
/Users/tmangner/.rvm/gems/ruby-1.9.2-p290@madgoal/gems/activesupport-
3.2.2/lib/active_support/dependencies.rb:251:in `require': no such file
to load -- lib/services/my_lib (LoadError)
Je n'ai aucune idée, ce qui empêche de Ruby 1.9 de trouver la lib.
source d'informationauteur DiegoFrings
Vous devez vous connecter pour publier un commentaire.
Le chemin de chargement en ruby 1.9 ne fonctionne pas exactement comme il l'a fait en 1.8.
Vous devez ajouter le projet à la racine de votre chemin de chargement.
Ce faire, vous pouvez soit en cours d'exécution rspec comme ceci:
...ou en ajoutant manuellement des trucs sur le chemin de chargement dans votre
spec_helper.rb
(mettre ceci en haut de votrespec_helper.rb
Je pense que rspec ajoute par défaut de votre région
lib
répertoire du chemin de chargement, de sorte que vous pourriez être en mesure de réécrire le besoin plutôt comme suit:Dans RSpec 2.x, le
lib
répertoire est automatiquement ajoutée à la charge du chemin d'accès (voir RSpec-Core#get_started).De sorte que vous pouvez simplement utiliser
require 'services/my_lib'
dans votre fichier spec.Si votre spec est situé
spec/models/my_lib_spec.rb
et que vous souhaitez testerlib/services/my_lib.rb
alors dites-le spec comment obtenir le fichier libNote finale: depuis que vous êtes, y compris spec_helper.rb, vous n'avez généralement pas à donner tous les chemins de dépendances, depuis des Rails doit charger toutes ces pour vous.
Essayer de définir manuellement le chemin d'accès
$LOAD_PATH << './lib/services/'
puis ajouter la bibliothèque comme ce