ruby on rails - rails - Error al instalar la gema EventMachine en OSX Yosemite
ruby mac os sierra (7)
En caso de que la respuesta anterior no le ayude, puede intentar degradar su versión de Ruby a 2.1.2. Eso hizo el truco para mí (OS 10.10.2). Agregue esto en la parte superior de su Gemfile:
ruby ''2.1.2''
Aquí está la salida completa del mensaje de error:
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
¿Alguien ha visto un error como este antes? Tengo las herramientas de la línea de comandos: nunca me topé con un error al compilar esta gema en mi vieja computadora portátil que también ejecuta Yosemite.
Entiendo que esta pregunta se ha hecho hace bastante tiempo, pero acabo de ver este error y, después de haber intentado todas las respuestas y haber luchado con esto y otro par de gemas, me di cuenta de que estaba intentando instalar un proyecto bastante antiguo y por lo tanto, algunas gemas no eran compatibles con las bibliotecas actuales y la mayoría de ellas eran en realidad requisitos para las gemas reales del proyecto.
Lo que hice entonces fue eliminar el archivo Gemfile.lock
y dejar que bundler
lo bundler
crear con referencias más actuales para las gemas de dependencia y eso funcionó para mi caso y, por lo tanto, contribuyo a otros que eventualmente se encuentran en la misma situación:
rm Gemfile.lock
bundle install
¡Espero que ayude!
Para El Capitán, esto me funcionó:
$ bundle update eventmachine # updated to v1.0.8
$ bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
$ bundle install
Prueba esto
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
Recuerdo haber instalado otra gema que requería una máquina de eventos y me dio problemas en Windows. Tuve que instalar herramientas DevKit y eso resolvió mi problema. Lo siento, no puedo proporcionar más detalles, pero espero que ayude a resolver su problema. También puedes probar lo que Prakash compartió github.com/eventmachine/eventmachine/issues/553 . Tuve que actualizarme al final después de instalar Devkit.
Si tiene instalado brew, intente
brew install openssl
y si todavía dice,
Warning: openssl-1.0.2e already installed
a continuación, ejecute este comando,
brew link openssl --force
Hará el truco. :)
EventMachine 1.0.3 no funcionó con Ruby 2.2 . Esto fue corregido en EventMachine 1.0.4. Es muy probable que pueda solucionar su situación actualizando EventMachine con
bundle update eventmachine