Je suis très content. J’ai installé Ubuntu (qui m’a fait quelques frayeurs en ne répondant plus pendant le formatage du disque dur…) et j’ai installé Ruby, Scite (l’éditeur de texte) et même Ruby on Rails (après avoir installé Ruby Gems). Ensuite, j’ai installé Ruby DBI, la fameuse lib qui me posait problème. Mais (parce qu’il y a un “mais” vous l’aurez compris), j’ai toujours un problème. Dès que je fais require 'dbi', j’ai une belle erreur :
in `gem_original_require': no such file to load -- deprecated (LoadError)
Alors je veux bien comprendre que Windows est pas un environnement optimal pour le Ruby, je veux bien avoir du mal à installer les bonnes librairies, mais bon sang, si je change d’OS et qu’en même temps j’arrive à installer la bonne lib, j’aimerais bien pouvoir l’utiliser! Bref, si quelqu’un peut m’expliquer où est le problème, si ça vient de moi (sûrement) ou de la version de Ruby DBI, je suis preneur.
En attendant, je me suis baladé sur le site officiel de Ruby et j’ai lu la partie “Ruby in Twenty Minutes”, et c’est vraiment bien. Je pense que si j’avais lu ça au départ, j’aurais mal saisi des trucs. Mais a posteriori, lorsque je lis ça, je comprends tout à fait ET j’apprends encore des choses.
Le Quickstart en Ruby
Le site officiel a donc une introduction au Ruby assez intéressante, parcourant les String, les Numbers, le module Math, la création d’une méthode et la création d’une Classe (avec ses méthodes, ses attributs). Bref, une piqûre de rappel qui m’a quand même appris quelques nouvelles astuces.
instance_methods
La méthode .instance_methods liste toutes les méthodes disponibles pour une classe donnée. Et c’est super pratique.
class Bonjour def initialize(nom) @nom = nom end def salut puts "Salut #{@nom}!" end def au_revoir puts "A plus #{@nom}." end end b = Bonjour.new("Wayne") b.salut # Salut Wayne!
J’ai créé une classe, rien de plus banal. On va maintenant lister les méthodes auxquelles elle peut accéder.
puts Bonjour.instance_methods =begin inspect au_revoir tap clone public_methods __send__ object_id instance_variable_defined? equal? freeze extend send methods hash dup to_enum instance_variables eql? instance_eval id singleton_methods taint enum_for frozen? instance_variable_get instance_of? display to_a method type instance_exec protected_methods == === instance_variable_set kind_of? respond_to? to_s salut class __id__ tainted? =~ private_methods untaint nil? is_a? =end
Whaou, ça en fait beaucoup. Et pourtant on en a définie que 2. En fait, on affiche ici aussi les méthodes des classes ancêtres, et notamment des classes Object et Class. Pour n’avoir que celles spécifique à la classe Bonjour, on fait :
puts Bonjour.instance_methods(false) # salut # au_revoir
Nettement mieux non ?
respond_to?
Super pratique : la méthode .respond_to permet de vérifier si on peut utiliser la méthode passée en argument. Exemple :
mon_nombre = 2 puts mon_nombre.respond_to?("each") # false mon_tableau = ["un","deux"] puts mon_tableau.respond_to?("each") # true
On peut pas appliquer la méthode .each à mon nombre pour faire une itération. Par contre, on peut le faire pour mon tableau (logique). Même résultat pour respond_to?("join").
Flux RSS
J’ai fait le test suivant (A Simple DBI Script : http://www.kitebird.com/articles/ruby-dbi.html#TOC_4) sur Debian, mais ça fonctionne certainement comme sous Ubuntu. Tout se passe bien.
Pour ma part, j’ai installé DBI simplement via la commande apt-get install libdbd-mysql-ruby (je n’ai pas utilisé les sources).
Hello there,
j’allais justement te parler de la libdb dont Nicolas parle. Autre chose aussi, sous Ubuntu en tous cas, il n’est pas recommandé d’installer Gems via apt(itude) mais en le téléchargeant depuis le site et décompressant puis lançant le script d’installation… Je ne sais pas si t’as procédé comme ça…
En tous cas, cette erreur me fait principalement penser à un installation “bancale”, tu pourrais nous filer les liens des tutos que tu as suivi pour installer tes joujoux ou mieux détailler ta démarche d’installation ?
vincent
Hello
Pour l’installation de DBI, j’ai suivi la procédure du site : http://www.kitebird.com/articles/ruby-dbi.html#TOC_3
J’ai donc téléchargé le tar.gz alors que c’est ce que je voulais éviter! Je voulais justement passer par le terminal pour l’installer mais j’ai trouvé aucune commande!
Pour RubyGems et Rails, j’ai suivi cette procédure : https://help.ubuntu.com/community/RubyOnRails
Bref, je pense que je vais faire apt-get install libdbd-mysql-ruby en rentrant. C’est exactement la commande que je recherchais. Je ne comprends pas pourquoi elle n’est pas inscrite sur le site de DBI!
En fait je vais suivre Nicolas, et tenter sur mon serveur qui est en Ubuntu également (Hardy). Je suis la procédure :
——————————–
-$> aptitute install libdbd-mysql-ruby
——————————–
il me propose 3 paquets :
- libdbd-mysql-ruby
- libdbd-mysql-ruby1.8
- libdbi-ruby1.8
Et c’est tout :
————————
-$> irb
irb(main):001:0> require ‘dbi’
=> true
————————
Par contre je sais pas si tu le sais, mais la guéguerre *apt-get* VS *aptitude* m’a amené à une conclusion pour éviter des soucis : peu importe lequel tu utilises, utilise toujours le même… dans ton cas ce sera donc plutôt un apt-get…
Note: via cette méthode, tu n’installes pas DBI en tant que gem mais en tant que paquet ! Elle n’apparait donc pas dans la liste des gems
-$> gem list
*** LOCAL GEMS ***
actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
columnize (0.3.0)
fastthread (1.0.7)
linecache (0.43)
passenger (2.2.1, 2.1.3)
rails (2.3.2)
rake (0.8.4)
ruby-debug-base (0.10.3)
rubygems-update (1.3.2, 1.3.1)
Ah, j’ai pas vu ton post, étant donné que je rédigeais le mien… En effet, je viens de le faire (je n’avais pas DBI, donc c’était “from scratch”) et ça fonctionne au poil..
l’idée c’est que DBI n’étant pas une lib indispensable, elle n’est pas inclue dans les dépendances “directes” de RoR (le tuto d’Ubuntu est assez bien fait, j’ai suivi celui là aussi et j’ai pas eu de souci majeurs)
tiens nous au courant…
vincent