刚安装El Capitan并且无法安装gem eventmachine 1.0.7.openssl在1.0.2a-1.试图使用--with-ssl-dir但似乎被忽略了.
报告给他们的github回购也.
任何建议都非常感谢.谢谢.
$ ls /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h
/usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h
$ gem install eventmachine -v '1.0.7' -- --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include
/Users/pain/.rbenv/versions/2.1.2/bin/ruby -r ./siteconf20150612-56154-1hsjz2n.rb extconf.rb --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
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_thread_fd_select()... yes
checking for rb_fdset_t in ruby/intern.h... yes …Run Code Online (Sandbox Code Playgroud) 来自维基百科Reactor Pattern文章:
反应器设计模式是用于处理通过一个或多个输入同时传递给服务处理器的服务请求的事件处理模式.
它命名了几个例子,例如nodejs,twisted,eventmachine
但据我所知,上面是流行的事件驱动框架,所以让它们也成为反应堆模式框架?
如何区分这两个?或者他们是一样的?
我一直在使用Sinatra一段时间,我想通过websockets推送数据,为我的web-app添加一些实时功能.
我已经成功地使用了gem'em-websocket',但是还没能编写一个带有sinatra Web服务器和web-socket服务器的ruby文件.
我试过旋转跑!或者开始!在单独的线程中关闭方法但没有成功.
有没有人得到这个工作?
我希望将它们放在同一个文件中,然后在两个服务器之间共享变量.
谢谢!
我将开发一个协作网站,其中一个功能将是实时更改的协作编辑.即,当两个或更多用户正在编辑同一个文档时,他们可以在发生时立即看到彼此的变化.我对Ruby on Rails有一些经验,所以我在考虑使用EventMachine,但是围绕Node.js的所有这些炒作,我知道考虑使用它.那么,使用Node.js而不是EventMachine的主要好处是什么?
tl; dr EventMachine和Node.js之间的主要区别是什么(除了语言)?
我发现很多文章向我展示了EventMachine是什么以及如何建立无尽的"Hello World!" 例子,但我仍然不知道如何与我的Rails应用程序集成.
作为一个例子,我有一个现有的Rails应用程序,它有许多并发用户可能同时在我的数据库中编辑同一行.我想我会允许两个(或更多)不同的人加载记录,但是如果记录被更新则通知这些用户并强制后者用户在将任何冲突的更改保存回数据库之前进行协调.我以为我可以使用客户端上的Javascript和websockets(或flashsockets)来处理通知和对帐,以便与浏览器进行通信(在另一个用户更新记录的事件上 - 如推送通知等).
最后一部分让我进入EventMachine,但是 - 正如我的引导问题所示 - 我对如何将其集成到我的Rails应用程序中感到茫然.
任何人都可以给我一些洞察力(比如,一个好的宏观层面观点)或指向一些好的资源吗?(除了EventMachine的维基,因为我已经去过那里).
我无法安装eventmachine
好的,我知道这已被问了很多,但到目前为止我找不到任何解决方案帮助了我.所以我作为最后的手段在这里发布.
我使用( windows 8 x64通过ruby 2.0.0p195 (x64)Ruby Installer for Windows安装适当的Devkit)
所以错误是
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension
C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for main() in -lssl... no
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
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... no
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... …Run Code Online (Sandbox Code Playgroud) 我不明白这些框架解决了什么问题.它们是Apache HTTPD,Tomcat,Mongrel等HTTP服务器的替代品吗?或者他们更多?为什么我可以使用它们......一些现实世界的例子?我已经看到了无数的聊天室和广播服务的例子,但是看不出这有什么不同,例如,设置一个Java程序来打开套接字并为每个请求分配一个线程.
我想我理解非阻塞I/O,但我不明白它与多线程Web服务器的区别.对于Node.js,我读到它只有一个线程,并且这可能比处理多个线程更有效,但这是这些框架和传统Web服务器之间的唯一区别吗?
以下是错误消息的完整输出:
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 …Run Code Online (Sandbox Code Playgroud) 我有一个Rails应用程序,我希望为它添加某种WebSocket支持.从各种Google搜索,似乎最好的基于Ruby的WebSocket解决方案是在EventMachine上运行的em-websocket.
我想知道是否有办法将EventMachine反应器"集成"到Rails中?我在哪里放置初始化代码?这是实现这个目标的正确方法吗?
我已经看到这个回到Sinatra的例子来做一个EventMachine GET请求,但这并不是我想要的.
任何帮助表示赞赏.
$ bundle install
Errno::ENOENT: No such file or directory @ rb_sysopen - /Users/Sean/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/eventmachine-1.0.3/ext/gem_make.out
An error occurred while installing eventmachine (1.0.3), and Bundler cannot
continue.
Make sure that `gem install eventmachine -v '1.0.3'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)
$ gem list
eventmachine (1.0.3 x86-mingw32)
Run Code Online (Sandbox Code Playgroud)
$ gem build eventmachine -v 1.0.3
ERROR: While executing gem ... (Gem::CommandLineError)
Too many gem names (eventmachine, 1.0.3); please specify only one
Run Code Online (Sandbox Code Playgroud) eventmachine ×10
ruby ×6
node.js ×2
twisted ×2
websocket ×2
bundler ×1
commonjs ×1
event-driven ×1
events ×1
gcc ×1
homebrew ×1
macos ×1
nonblocking ×1
openssl ×1
osx-yosemite ×1
rack ×1
rubygems ×1
sinatra ×1