Il n’est pas possible d’installer le gem sqlite3-ruby requis par Rails 2.x pour faire fonctionner une application “par défaut” si on utilise la version MinGW32 de Ruby packagée dans le projet Ruby Installer 3.0 pour Windows.
Alors il faut bidouiller un peu… en fait la modif est tellement simple qu’elle devrait pouvoir être intégrée directement à sqlite3-ruby ou à Ruby Installer puisqu’il sait d’ores et déjà récupérer des sources, les décompresser et les compiler lui-même…
Moi, compiler, ça m’amuse, alors on y va, même pas peur !
- Installez Ruby 1.8 avec le Ruby One Click Installer
- Mettez Rake à jour
gem update rake
- Installez MSysGit
- Ouvrez la console Bash GIT (clic droit sur un dossier quelconque depuis l’explorateur Windows : Git Bash Here)
- Clonez le dépôt de RubyInstaller
mkdir source cd source git clone git://github.com/luislavena/rubyinstaller
- Construisez Ruby Installer 3.0
cd rubyinstaller rake CHEKCOUT=1 rake package
- Installez le package ‘devkit’ qui est dans sous répertoire “pkg”
- Enlevez la variable d’environnement RUBYOPT (qui normalement vaut ’—rubygems’)
- Modifiez la variable d’environnement PATH et changez ‘C:\Ruby…’ en ‘C:\Ruby18…’
- Vérifiez en lancant Ruby depuis une console DOS
C:\>ruby --version ruby 1.8.6 (2008-08-08 patchlevel 286) [i386-mingw32]
- Tentez d’installer quelques gems
gem install rails gem install capistrano gem install merb datamapper sequel gem install fastercvs gem install haml gem install hpricot gem install oniguruma gem install ruport prawn gem install ultraviolet gem install thin
Mais le gem sqlite3-ruby, requis pour faire fonctionner une application Rails “par défaut” ne s’installera pas en version “native”, le gem étant préconfiguré pour les plateformes POSIX et même si l’installation de la version mswin32 est possible (avec l’option—platform mswin32), l’utiliser vous vaudra un message d’erreur disant que la version pour la plateforme ‘mswin32’ n’est pas compatible avec la version ‘mingw32’ qui est installée, d’autres gems comme mongrel, mongrel_cluster et d’autres dont la version native n’est pas installable mais qui sont livrés avec une version mswin32 précompilée fonctionnent.
Donc il faut installer la version native. Mais elle ne compile pas. Alors il faut qu’elle compile… fastoche.
- Récupérez le code de sqlite3-ruby depuis GitHub
cd source git clone git://github/jamis/sqlite3-ruby
- Récupérez aussi les Sources de SQLite3
- Décompressez les fichiers dans sqlite3-ruby\ext\sqlite3-api
- Récupérez la DLL de SQLite3 précompilée pour Windows
- Décompressez les fichiers dans sqlite3-ruby\ext\sqlite3-api
- Compilez l’extension
cd sqlite3-ruby\ext\sqlite3-api ruby extconf.rb make
Là vous devriez voir apparaître un fichier (LE fichier !) sqlite3_api.so
Ensuite, l’alternative : gem ou pas gem ?
- Gem : commencez par changer Gem::Platform::WIN32 en Gem::Platform::CURRENT dans le fichier sqlite3-ruby-win32.gemspec (RubyGems a changé...)
cd ..\.. # Vous devriez être dans 'source/sqlite3-ruby' gem build sqlite3-ruby-win32.gemspec gem install sqlite3-ruby-1.2.2-x86-mingw32.gem
Attention ! Le Gem généré est énorme (plus de 2Mo !), c’est parce qu’il embarque tous les fichiers qui sont dans le sous-répertoire ext. Pour bien faire il faudrait encore modifier le gemspec pour qu’il ne prenne que les fichiers utile (les sources sqlite3-api-wrap.c et sqlite3-api.so, peut-être sqlite3.dll mais certainement pas les .o ni les sources de sqlite, sqlite3.c, sqlite3.h et sqlite3ext.h)
- Pas Gem : les fichiers seront installés directement dans l’arborescence des extensions natives de Ruby (C:\Ruby18\lib\site_ruby)
# Vous devriez être dans 'source/sqlite3-ruby' ruby setup.rb config ruby setup.rb setup ruby setup.rb install
Voilà. Normalement vous avez de quoi utiliser SQLite3 !
-
Trackback from elchinas on 3 janvier 2009 at 16:40
1 comment
Comments feed for this article
Trackback link: http://levosgien.net/2008/08/13/ruby-installer-30-mingw-et-sqlite-3/trackback/