Rails3 / require

1 view
Skip to first unread message

Jean-Baptiste Barth

unread,
Feb 9, 2010, 3:45:00 PM2/9/10
to rails...@googlegroups.com
Hi,

Comme certains ici j'imagine, je teste un peu Rails 3 depuis la bêta (et même depuis le dernier apéro ruby, trop envie de me faire mon propre convertisseur csv2json :-))

Voici mon problème du jour : les gems non présents dans mon Gemfile ne semblent pas accessibles depuis une console. J'ai parcouru les release notes et le readme de bundler sans succès. En gros voici ce qui se passe :

% irb
irb(main):001:0> require 'rubygems'; require 'hpricot'
=> true

% rails console
Loading development environment (Rails 3.0.0.beta1)
irb(main):001:0> require 'rubygems'; require 'hpricot'
LoadError: no such file to load -- hpricot
from /home/salvor/dev/rails/rails3/activesupport/lib/active_support/dependencies.rb:167:in `require'
        ...
Gem.path contient bien le répertoire où sont mes gems. Et si la gem en question est dans mon Gemfile, ça fonctionne.

D'où plusieurs questions :
- bug or feature ?
- quelqu'un aurait un moyen de pouvoir charger des gems sans qu'ils soient dans le Gemfile ?
- des ressources sur bundler ou rails3 qui pourraient m'expliquer ça ?

Merci d'avance,
-- 
Jean-Baptiste

Nicolas Mérouze

unread,
Feb 9, 2010, 4:35:48 PM2/9/10
to rails...@googlegroups.com
Même coup aujourd'hui seulement sur des gems avec une extension native (comme hpricot). Vu tous les hacks de require dans ActiveSupport (qui posent des problèmes avec less en plus) ça ne m'étonnerait pas qu'il y ait un bug quelque part. Sinon ça vient peut-être de Bundler, faudrait essayer d'utiliser hpricot avec juste activesupport 3.0.0.beta pour essayer de voir d'où ça vient.

--
Nicolas Mérouze / @nmerouze
http://boldr.net

Jean-Baptiste Barth

unread,
Feb 9, 2010, 5:34:46 PM2/9/10
to rails...@googlegroups.com
Le 9 février 2010 22:35, Nicolas Mérouze <nicolas...@gmail.com> a écrit :
Même coup aujourd'hui seulement sur des gems avec une extension native (comme hpricot). 

Je rencontre le même problème avec Wirble aussi (sans compilation locale). C'est un peu la raison de ma question en fait : ça me paraitrait absurde d'inclure dans le Gemfile d'une appli des choses qui n'ont rien à voir (qui sont dans mon .irbrc en l'occurence)...

Merci pour la réponse en tout cas,
-- 
Jean-Baptiste

Cyril Mougel

unread,
Feb 10, 2010, 5:51:40 AM2/10/10
to rails...@googlegroups.com
Le 09/02/10 23:34, Jean-Baptiste Barth a �crit :
> Le 9 f�vrier 2010 22:35, Nicolas M�rouze <nicolas...@gmail.com
> <mailto:nicolas...@gmail.com>> a �crit :
>
> M�me coup aujourd'hui seulement sur des gems avec une extension
> native (comme hpricot).
>
>
> Je rencontre le m�me probl�me avec Wirble aussi (sans compilation
> locale). C'est un peu la raison de ma question en fait : �a me

> paraitrait absurde d'inclure dans le Gemfile d'une appli des choses qui
> n'ont rien � voir (qui sont dans mon .irbrc en l'occurence)...
>
> Merci pour la r�ponse en tout cas,

Personnellement je trouve tr�s bien que bundler te bloquer l'ajout de
gem si tu ne les as pas list� dans ton gemfile. Ca permet de vraiment
�tre sur facilement que tu n'as pas oubli� de d�pendance. Tu as ainsi
tout personne qui intervient sur ton projet qui est au courant des
d�pendances.


--
Cyril Mougel
http://blog.shingara.fr/

Cyril Mougel

unread,
Feb 10, 2010, 5:57:27 AM2/10/10
to rails...@googlegroups.com
Le 09/02/10 21:45, Jean-Baptiste Barth a �crit :
> Hi,
>
> Comme certains ici j'imagine, je teste un peu Rails 3 depuis la b�ta (et
> m�me depuis le dernier ap�ro ruby, trop envie de me faire mon propre
> convertisseur csv2json :-))
>
> Voici mon probl�me du jour : les gems non pr�sents dans mon Gemfile ne

> semblent pas accessibles depuis une console. J'ai parcouru les release
> notes et le readme de bundler sans succ�s. En gros voici ce qui se passe :

>
> % irb
> irb(main):001:0> require 'rubygems'; require 'hpricot'
> => true
>
> % rails console
> Loading development environment (Rails 3.0.0.beta1)
> irb(main):001:0> require 'rubygems'; require 'hpricot'
> LoadError: no such file to load -- hpricot
> from
> /home/salvor/dev/rails/rails3/activesupport/lib/active_support/dependencies.rb:167:in
> `require'
> ...
> Gem.path contient bien le r�pertoire o� sont mes gems. Et si la gem en
> question est dans mon Gemfile, �a fonctionne.
>
> D'o� plusieurs questions :

> - bug or feature ?
> - quelqu'un aurait un moyen de pouvoir charger des gems sans qu'ils
> soient dans le Gemfile ?
> - des ressources sur bundler ou rails3 qui pourraient m'expliquer �a ?
>
> Merci d'avance,

Pour info si tu regardes le fichier .bundle/environement.rb, tu
constateras que le LOAD_PATH est exactement ce que tu as d�finis dans
ton GemFile � la version pr�s.

Donc si tu veux un m�chant tout moche hack. modifie cette constante.

Nicolas Mérouze

unread,
Feb 10, 2010, 6:01:59 AM2/10/10
to rails...@googlegroups.com
Dans mon cas c'est un peu de la faute de Mongoid et de CarrierWave qui n'ont pas mongo_ext pour l'un et mini_magick pour l'autre dans leurs dépendances. Et c'est là que le débat se complique puisque ces 2 gems ne peuvent pas avoir ces dépendances en dur.

Ce qui fait que ce système est loin d'être idéal et que faire un hack pour contourner c'est pas l'idéal non plus.

Jean-Baptiste Barth

unread,
Feb 10, 2010, 6:55:40 AM2/10/10
to rails...@googlegroups.com


Le 10 février 2010 11:51, Cyril Mougel <cyril....@gmail.com> a écrit :
Personnellement je trouve très bien que bundler te bloquer l'ajout de
gem si tu ne les as pas listé dans ton gemfile. Ca permet de vraiment
être sur facilement que tu n'as pas oublié de dépendance. Tu as ainsi

tout personne qui intervient sur ton projet qui est au courant des
dépendances.

Je suis bien d'accord pour les *dépendances*. Wirble sert à améliorer les consoles IRB (historique, colorisation, etc) ; ça n'a rien à voir avec une dépendance de mon appli. Et le require est dans mon .irbrc, donc en dehors de l'appli...
-- 
Jean-Baptiste 

Jean-Baptiste Barth

unread,
Feb 10, 2010, 6:56:24 AM2/10/10
to rails...@googlegroups.com
Le 10 février 2010 11:57, Cyril Mougel <cyril....@gmail.com> a écrit :
Pour info si tu regardes le fichier .bundle/environement.rb, tu
constateras que le LOAD_PATH est exactement ce que tu as définis dans
ton GemFile à la version près.

Donc si tu veux un méchant tout moche hack. modifie cette constante.

Je vais regarder de ce côté en attendant mieux, merci
-- 
Jean-Baptiste 

Cyril Mougel

unread,
Feb 10, 2010, 7:17:08 AM2/10/10
to rails...@googlegroups.com
Le 10/02/10 12:56, Jean-Baptiste Barth a �crit :
> Le 10 f�vrier 2010 11:57, Cyril Mougel <cyril....@gmail.com
> <mailto:cyril....@gmail.com>> a �crit :

>
> Pour info si tu regardes le fichier .bundle/environement.rb, tu
> constateras que le LOAD_PATH est exactement ce que tu as d�finis dans
> ton GemFile � la version pr�s.
>
> Donc si tu veux un m�chant tout moche hack. modifie cette constante.
>
>
> Je vais regarder de ce c�t� en attendant mieux, merci

Je comprend tout � fait ta probl�matique avec wirble et ca se d�fend.

Je t'encourage a rejoindre la mailing du projet bundler (
http://groups.google.com/group/ruby-bundler )

Tu pourras ainsi y remonter ton probl�me et demande un solution ou faire
une feature request.

Exemple, avoir son propre Gemfile, style .Gemfile qui n'est pas versionn�.

Renaud (Nel) Morvan

unread,
Feb 10, 2010, 10:17:32 AM2/10/10
to Railsfrance
it's not a bug, it's a feature.

En fait bundler != rubygems

Si le gem n'est pas indiqué dans bundler comme étant un gem devant
être chargé par rubygems, il n'est pas chargé par rubygems

Ce qu'il faut comprendre de façon sous jacente c'est que bundler est
un moyen de remplacer rubygems pas un truc à utiliser en parallèle.

On 9 fév, 21:45, Jean-Baptiste Barth <jeanbaptiste.ba...@gmail.com>
wrote:


> Hi,
>
> Comme certains ici j'imagine, je teste un peu Rails 3 depuis la bêta (et
> même depuis le dernier apéro ruby, trop envie de me faire mon propre
> convertisseur csv2json :-))
>
> Voici mon problème du jour : les gems non présents dans mon Gemfile ne
> semblent pas accessibles depuis une console. J'ai parcouru les release notes
> et le readme de bundler sans succès. En gros voici ce qui se passe :
>
> % irb
> irb(main):001:0> require 'rubygems'; require 'hpricot'
> => true
>
> % rails console
> Loading development environment (Rails 3.0.0.beta1)
> irb(main):001:0> require 'rubygems'; require 'hpricot'
> LoadError: no such file to load -- hpricot
> from

> /home/salvor/dev/rails/rails3/activesupport/lib/active_support/dependencies .rb:167:in

Nicolas Blanco

unread,
Feb 10, 2010, 10:28:32 AM2/10/10
to rails...@googlegroups.com
Bon en attendant d'avoir quelque chose de mieux, vous pouvez toujours
utiliser les groupes pour indiquer vos dépendances utilisées
exclusivement dans certains environnements...
cf. README de bundler : "Groups : applications may have dependencies
that are specific to certain environments, such as testing or
deployment."

Nicolas.

2010/2/10 Renaud (Nel) Morvan <renaud...@gmail.com>:

> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse rails...@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages