sierra rails mac instalar ruby-on-rails ruby gcc osx-yosemite eventmachine

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. :)