Forum: Rails France Rails3 / require

9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-02-09 21:46
(Received via mailing list)
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
Ca1e596b035117dc7c41b1d99469fe91?d=identicon&s=25 Nicolas Mérouze (Guest)
on 2010-02-09 22:36
(Received via mailing list)
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
9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-02-09 23:36
(Received via mailing list)
Le 9 février 2010 22:35, Nicolas Mérouze <nicolas.merouze@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
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-02-10 11:52
(Received via mailing list)
Le 09/02/10 23:34, Jean-Baptiste Barth a écrit :
> 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/
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-02-10 11:58
(Received via mailing list)
Le 09/02/10 21:45, Jean-Baptiste Barth a écrit :
> % irb
>         ...
> 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.

--
Cyril Mougel
http://blog.shingara.fr/
Ca1e596b035117dc7c41b1d99469fe91?d=identicon&s=25 Nicolas Mérouze (Guest)
on 2010-02-10 12:03
(Received via mailing list)
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.

--
Nicolas Mérouze / @nmerouze
http://boldr.net
9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-02-10 12:56
(Received via mailing list)
Le 10 février 2010 11:51, Cyril Mougel <cyril.mougel@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
9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-02-10 12:57
(Received via mailing list)
Le 10 février 2010 11:57, Cyril Mougel <cyril.mougel@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
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2010-02-10 13:17
(Received via mailing list)
Le 10/02/10 12:56, Jean-Baptiste Barth a écrit :
> 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é.
--
Cyril Mougel
http://blog.shingara.fr/
4a7982065027f6678cf86fd469d34f08?d=identicon&s=25 Renaud (Nel) Morvan (Guest)
on 2010-02-10 16:18
(Received via mailing list)
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>
8458ed8e78b2660f8b839f052e20f65f?d=identicon&s=25 Nicolas Blanco (slainer68)
on 2010-02-10 16:29
(Received via mailing list)
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.morvan@gmail.com>:
This topic is locked and can not be replied to.