2015-01-15 26 views
3

它不是一個重複的Eventmachine gem install fail,這對Windows和我在OSX 10.9.5運行和紅寶石紅寶石2.2.0p0EventMachine的問題,安裝時(安裝時中間人)

我掙扎着爬EventMachine的安裝後,我安裝了Middleman。有關如何繼續的建議? 我已經試過sudo gem安裝eventmachine -v'1.0.3'和gem install eventmachine -v 1.0.4但是沒有運氣。

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

     /Users/malditojavi/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150115-4062-w3t883.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/malditojavi/.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/malditojavi/.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/malditojavi/.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 

    Gem files will remain installed in /Users/malditojavi/.rvm/rubies/ruby-2.2.0/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.3 for inspection. 
    Results logged to /Users/malditojavi/.rvm/rubies/ruby-2.2.0/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-13/2.2.0/eventmachine-1.0.3/gem_make.out 

回答

1

你應該在你的包使用升級版本EventMachine的:

bundle update eventmachine 
2

有EventMachine的1.0.3和Ruby 2.2.x中之間的不兼容爲了解決這個問題,無論是

  • 降級你的Ruby 2.1.2

  • 升級EventMachine的寶石1.0.4(在你的Gemfile的頂部添加ruby '2.1.2')。