如何在1.9.2上安装SystemTimer?

我刚刚使用RVM将我的应用程序从1.8.7升级到1.9.2,并且不得不添加RubyGems和Bundler,运行bundle install并使一切工作除了SystemTimer。 Google-fu没有任何回报,我看到其他人在1.9中遇到了问题,但有些人已经开始工作了。 有任何想法吗?

pawel:bodb pawel$ sudo gem install SystemTimer Building native extensions. This could take a while... /Users/pawel/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/ext/builder.rb:48: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777 ERROR: Error installing SystemTimer: ERROR: Failed to build gem native extension. /Users/pawel/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb creating Makefile make /usr/bin/gcc-4.2 -I. -I/Users/pawel/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-darwin10.3.0 -I/Users/pawel/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/ruby/backward -I/Users/pawel/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -fno-common -pipe -o system_timer_native.o -c system_timer_native.c In file included from system_timer_native.c:8: /Users/pawel/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/ruby/backward/rubysig.h:14:2: warning: #warning rubysig.h is obsolete system_timer_native.c: In function 'install_first_timer_and_save_original_configuration': system_timer_native.c:46: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:53: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:57: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:62: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:65: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:69: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:82: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:89: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:96: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:101: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c: In function 'install_next_timer': system_timer_native.c:112: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:119: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:123: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:130: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:136: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:143: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:146: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c: In function 'restore_original_configuration': system_timer_native.c:157: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:160: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:168: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:170: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:172: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c: In function 'restore_original_timer_interval': system_timer_native.c:190: warning: passing argument 1 of 'log_error' discards qualifiers from pointer target type system_timer_native.c:192: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c: In function 'restore_sigalrm_mask': system_timer_native.c:199: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:201: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c: In function 'install_ruby_sigalrm_handler': system_timer_native.c:211: error: 'rb_thread_critical' undeclared (first use in this function) system_timer_native.c:211: error: (Each undeclared identifier is reported only once system_timer_native.c:211: error: for each function it appears in.) system_timer_native.c: In function 'restore_original_ruby_sigalrm_handler': system_timer_native.c:217: error: 'rb_thread_critical' undeclared (first use in this function) system_timer_native.c: In function 'clear_pending_sigalrm_for_ruby_threads': system_timer_native.c:266: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c: In function 'set_itimerval': system_timer_native.c:290: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type system_timer_native.c:295: warning: implicit conversion shortens 64-bit value into a 32-bit value system_timer_native.c:299: warning: passing argument 1 of 'log_debug' discards qualifiers from pointer target type make: *** [system_timer_native.o] Error 1 Gem files will remain installed in /Users/pawel/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/SystemTimer-1.2.3 for inspection. Results logged to /Users/pawel/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/SystemTimer-1.2.3/ext/system_timer/gem_make.out 

据我所知,SystemTimer与ruby 1.9无关,不应与此版本一起使用。

“在Ruby 1.9中使用这个gem是没用的,没有任何意义!System Timer试图解决Ruby 1.8(MRI)中使用的”绿色线程“模型的某些限制。请参阅http://ph7spot.com/musings / system-timer获取更多详细信息。“

SystemTimer替代品是来自Ruby核心的timeout.rb 。 不需要任何第三方gem。

Ruby 1.8:

 require 'system_timer' SystemTimer.timeout_after(5.minutes, MyException) do # your job here end 

Ruby 1.9:

 require 'timeout' Timeout.timeout(5.minutes, MyException) do # your job here end 

要安装系统计时器,请在终端中使用此命令:

 sudo gem install system_timer