Voici la sortie complète du message d'erreur:
Fetching: eventmachine-1.0.3.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing eventmachine:
ERROR: Failed to build gem native extension.
/Users/Tyler/.rvm/rubies/Ruby-2.2.0/bin/Ruby -r ./siteconf20141229-47086-wfdm3m.rb extconf.rb
checking for rb_trap_immediate in Ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... no
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for sys/event.h... yes
checking for sys/queue.h... yes
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling binder.cpp
compiling cmain.cpp
compiling ed.cpp
compiling em.cpp
em.cpp:827:9: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
^~~~~~~~
rb_thread_fd_select
./em.h:25:20: note: expanded from macro 'EmSelect'
#define EmSelect rb_thread_select
^
/Users/Tyler/.rvm/rubies/Ruby-2.2.0/include/Ruby-2.2.0/Ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
^
em.cpp:827:32: error: cannot initialize a parameter of type 'rb_fdset_t *' with an rvalue of type 'fd_set *'
return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
^~~~~~~~
/Users/Tyler/.rvm/rubies/Ruby-2.2.0/include/Ruby-2.2.0/Ruby/intern.h:454:42: note: passing argument to parameter here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
^
em.cpp:946:6: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
EmSelect (0, NULL, NULL, NULL, &tv);
^~~~~~~~
rb_thread_fd_select
./em.h:25:20: note: expanded from macro 'EmSelect'
#define EmSelect rb_thread_select
^
/Users/Tyler/.rvm/rubies/Ruby-2.2.0/include/Ruby-2.2.0/Ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
^
3 errors generated.
make: *** [em.o] Error 1
make failed, exit code 2
Quelqu'un a-t-il déjà vu une erreur comme celle-ci? J'ai les outils de ligne de commande - jamais rencontré une erreur en compilant ce joyau sur mon ancien ordinateur portable fonctionnant également sous Yosemite.
EventMachine 1.0.3 n’a pas fonctionné avec Ruby 2.2 . Ce problème a été résolu dans EventMachine 1.0.4. Vous pouvez probablement résoudre votre problème en mettant à niveau EventMachine avec
bundle update eventmachine
Pour El Capitan, cela a fonctionné pour moi:
$ bundle update eventmachine # updated to v1.0.8
$ bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
$ bundle install
si vous avez installé une brasserie, essayez
brew install openssl
et s'il dit encore,
Warning: openssl-1.0.2e already installed
puis lancez cette commande,
brew link openssl --force
ça fera l'affaire. :)
Essaye ça
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
Si la réponse ci-dessus ne vous aide pas, vous pouvez essayer de déclasser votre version de Ruby à la version 2.1.2. Cela a fait le tour pour moi (OS 10.10.2). Ajoutez ceci au sommet de votre Gemfile:
Ruby '2.1.2'
Je me souviens d'avoir installé une autre pierre précieuse nécessitant eventmachine et qui me posait des problèmes de fenêtres. J'ai dû installer DevKit tools et cela a résolu mon problème. désolé, je ne peux pas fournir plus de détails, mais j'espère que cela vous aidera à résoudre votre problème. vous pouvez également essayer ce que Prakash a partagé ci-dessus . Je devais me mettre à jour à la fin après avoir installé Devkit.
Je comprends que cette question a été posée il ya assez longtemps, mais j’ai vu cette erreur tout à l’heure et après avoir essayé toutes les réponses et lutté avec cela et avec un autre bijou, j’ai réalisé que j’essayais d’installer un projet assez ancien et par conséquent, certaines pierres précieuses n'étaient pas compatibles avec les bibliothèques actuelles et la plupart d'entre elles étaient en fait des exigences pour les pierres précieuses du projet.
Ce que j’ai alors fait, c’est de supprimer le fichier Gemfile.lock
et de laisser bundler
le recréer avec des références plus actuelles pour les gemmes de dépendance, ce qui a fonctionné pour mon cas. C’est pourquoi je contribue aux autres qui se retrouvent dans la même situation:
rm Gemfile.lock
bundle install
J'espère que cela pourra aider!