Exécuter un gemset RVM lors d’un changement de dossier

Il peut vous arriver de vouloir exécuter un gemset automatiquement lors d’un changement de dossier, sous Mac ou sous Linux, en particulier en utilisant votre invite de commande (type BASH, DASH, ZSH, etc.).

Éditez votre fichier de configuration dans votre dossier utilisateur (/home/user/.bashrc ou /home/user/.zshrc) à l’aide d’un éditeur de texte, puis ajoutez tout à la fin la ligne suivante :
source /home/user/.rvm/scripts/rvm

Si vos .rvmrc ne se chargent pas à l’entrée dans un dossier, il se peut que ce problème vienne du script d’installation de RVM qui copie une ligne dans ~/.bash_profile et qui n’est pas appelée.

La solution consiste à copier la dernière ligne de ~/.bash_profile à la fin de ~/.bashrc :
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Pour la session en cours, sourcer le fichier devrait résoudre le problème :
source ~/.bashrc

Il sera désormais chargé à chaque ouverture de terminal.

Rails : erreur lors de l’installation ruby-2.0.0-p451

Lors de l’installation de ruby 2 avec rvm en tapant cette ligne de commande :

rvm install ruby-2.0.0-p451

On peut rencontrer cette erreur :

Error running 'requirements_osx_brew_update_system ruby-2.0.0-p451'

Pour résoudre ce problème nous avons mis à jour homebrew puis indiqué à rvm d’utiliser homebrew à l’aide de ces deux commandes :

brew update
rvm autolibs homebrew

Problème d’installation de la gem libv8

Si vous rencontrer un souci avec la gem libv8 lors d’un bundle install sur votre pc (avec un projet ruby 1.8.7), faites ce qui suit :

– ajouter dans votre Gemfile (en dehors d’un group :assets)

group :production do  gem 'therubyracer', :platforms => :rubyend
group :development do  gem 'execjs'end

– dans votre terminal, à la place du bundle install, faites :

bundle install --without production

fatal: unable to connect to github.com: github.com errno=Connection refused

Si dans votre Gemfile, vous utilisez une gem dont l’installation se fait via un dépôt git, par exemple

et que lors du bundle install, vous obtenez l’erreur suivante

Dans ce cas, remplacer git:// par https://

Si vous êtes derrière un proxy, voir l’article Installation de gem derrière un proxy .

Installation de gem derrière un proxy

Si vous avez ce message d’erreur lors d’un bundle install ou une installation de gem : Could not fetch specs from http://rubygems.org/

C’est que vous n’avez pas accès à rubygems, peut-être dû à votre proxy si vous en avez un. Pour accéder à rubygems et installer un (ou une) gem en local derrière un proxy, il suffit de taper ceci dans votre terminal en remplaçant bien évidemment par vos valeurs :

export http_proxy=http://user:password@host:port

et pensez au https pour installation depuis un dépôt git en protocole https :

export https_proxy=http://user:password@host:port

Ensuite un petit gem install MA_GEM ou bundle install et normalement tout est ok.

Attention cette commande est à taper à chaque fois que vous ouvrez un terminal sauf si vous souhaitez la mettre dans un bashrc ou zshrc mais le mot de passe sera en clair pas terrible pour votre sécurité.

Bon courage

error libv8 mavericks

Si vous obtenez l’erreur suivante lors de votre bundle install ou gem install libv8 sur Mac OS X Mavericks

Building native extensions. This could take a while…
ERROR: Error installing libv8:
ERROR: Failed to build gem native extension.

/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.5
Configured with: –prefix=/Applications/Xcode.app/Contents/Developer/usr –with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Using compiler: g++
Configured with: –prefix=/Applications/Xcode.app/Contents/Developer/usr –with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
/Applications/Xcode.app/Contents/Developer/

Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:

file: /usr/local/rvm/gems/ruby-2.0.0-p247@intranet_ruby_2/gems/libv8-3.11.8.17/vendor/v8/out/x64.release

/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o has no symbols
In file included from ../src/accessors.cc:28:
In file included from ../src/v8.h:60:
In file included from ../src/objects-inl.h:38:
In file included from ../src/elements.h:33:
In file included from ../src/heap.h:41:
../src/store-buffer.h:229:9: error: private field ‘heap_’ is not used [-Werror,-Wunused-private-field]
Heap* heap_;
^
1 error generated.
make[1]: *** [/usr/local/rvm/gems/ruby-2.0.0-p247@intranet_ruby_2/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/v8_base/src/accessors.o] Error 1
make: *** [x64.release] Error 2
/usr/local/rvm/gems/ruby-2.0.0-p247@intranet_ruby_2/gems/libv8-3.11.8.17/ext/libv8/location.rb:36:in block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/usr/local/rvm/gems/ruby-2.0.0-p247@intranet_ruby_2/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
from /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/ext/libv8/location.rb:35:in
each’
from /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/ext/libv8/location.rb:35:in verify_installation!'
from /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/ext/libv8/location.rb:26:in
install!’
from extconf.rb:7:in `’
GYP_GENERATORS=make \
build/gyp/gyp –generator-output= »out » build/all.gyp \
-Ibuild/standalone.gypi –depth=. \
-Dv8_target_arch=x64 \
-S.x64 -Dv8_can_use_vfp_instructions=true
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/

vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
LIBTOOL-STATIC /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/libpreparser_lib.a
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/preparser/preparser/preparser-process.o
LINK(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/preparser
CXX(target) /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/vendor/v8/out/x64.release/obj.target/v8_base/src/accessors.o

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.0.0-p247@test/gems/libv8-3.11.8.17/ext/libv8/gem_make.out

Dans ce cas, essayez de faire un

ou l’installation de libv8 de la façon suivante

Entrée DNS sur un serveur dédié

Si vous pensez avoir des lenteurs en termes de résolutions de DNS sur un serveur (un peu fermé, iptables), essayez de mettre :

(attention c’est une tabulation)

dans le fichier /etc/hosts de votre serveur

Vous verrez le résultat est probant.

Exim : unrouteable address et Message frozen

Lors de l’installation d’un serveur, il faut configurer Exim 4 sans quoi il est impossible d’envoyer des emails. Les logs d’exim, situés dans /var/log/exim4/mainlog, nous indiquent une erreur SMTP : le domaine de l’expéditeur n’existe pas.

Pour corriger le problème, il faut changer le nom du serveur dans  2 fichiers :

  • /etc/mailname
  • /etc/exim4/update-exim4.conf.conf, pour le paramètre dc_other_hostnames

Une fois cette configuration faite, il faut redémarrer le serveur de mail

puis relancer l’expédition des mails bloqués.

MySQL LOAD DATA INFILE Access denied for user ‘user’@’localhost’ (using password: YES)

La fonction MySQL « LOAD DATA INFILE » permet d’insérer des informations en base depuis un fichier. L’intérêt de cette fonction réside principalement dans sa vitesse d’exécution. Cela est plus efficace que de parser le fichier en question dans l’application web et insérer les données dans un second temps.

Lors de l’utilisation de cette fonction, certaines erreurs peuvent survenir comme :

Access denied for user ‘user’@’localhost’ (using password: YES)

La première chose à faire est de donner les droits « file » à l’utilisateur de MySQL.

Une autre erreur peut subvenir et empêcher l’importation du fichier. Si l’erreur semble bien être liée à un problème d’accès au fichier, cela peut venir du mot clé « LOCAL » manquant.

Voici la syntaxe complète :