Q:

could not install gem zmq on mac osx yosemite

I have gem zmq installed properly on mac osx maverick. After upgrading to mac osx yosemite, It failed to install the gem with following error log:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/apple/.rbenv/versions/1.9.3-p484/bin/ruby extconf.rb
checking for zmq.h... yes
checking for zmq_init() in -lzmq... yes
Cool, I found your zmq install...
creating Makefile

make
compiling rbzmq.c
rbzmq.c:968:7: error: use of undeclared identifier 'ZMQ_RECOVERY_IVL_MSEC'
        case ZMQ_RECOVERY_IVL_MSEC:
             ^
rbzmq.c:990:10: error: use of undeclared identifier 'ZMQ_HWM'
    case ZMQ_HWM:
         ^
rbzmq.c:991:10: error: use of undeclared identifier 'ZMQ_SWAP'
    case ZMQ_SWAP:
         ^
rbzmq.c:995:10: error: use of undeclared identifier 'ZMQ_MCAST_LOOP'
    case ZMQ_MCAST_LOOP:
         ^
rbzmq.c:1292:10: error: use of undeclared identifier 'ZMQ_HWM'
    case ZMQ_HWM:
         ^
rbzmq.c:1293:10: error: use of undeclared identifier 'ZMQ_SWAP'
    case ZMQ_SWAP:
         ^
rbzmq.c:1297:10: error: use of undeclared identifier 'ZMQ_MCAST_LOOP'
    case ZMQ_MCAST_LOOP:
         ^
rbzmq.c:1315:10: error: use of undeclared identifier 'ZMQ_RECOVERY_IVL_MSEC'
    case ZMQ_RECOVERY_IVL_MSEC:
         ^
rbzmq.c:1443:81: error: too few arguments to function call, expected 4, have 3
    send_args->rc = zmq_send(send_args->socket, send_args->msg, send_args->flags);
                    ~~~~~~~~                                                    ^
/usr/local/include/zmq.h:354:1: note: 'zmq_send' declared here
ZMQ_EXPORT int zmq_send (void *s, const void *buf, size_t len, int flags);
^
/usr/local/include/zmq.h:67:27: note: expanded from macro 'ZMQ_EXPORT'
#       define ZMQ_EXPORT __attribute__ ((visibility("default")))
                          ^
rbzmq.c:1517:38: error: too few arguments to function call, expected 4, have 3
        rc = zmq_send (s, &msg, flags);
             ~~~~~~~~                ^
/usr/local/include/zmq.h:354:1: note: 'zmq_send' declared here
ZMQ_EXPORT int zmq_send (void *s, const void *buf, size_t len, int flags);
^
/usr/local/include/zmq.h:67:27: note: expanded from macro 'ZMQ_EXPORT'
#       define ZMQ_EXPORT __attribute__ ((visibility("default")))
                          ^
rbzmq.c:1541:81: error: too few arguments to function call, expected 4, have 3
    recv_args->rc = zmq_recv(recv_args->socket, recv_args->msg, recv_args->flags);
                    ~~~~~~~~                                                    ^
/usr/local/include/zmq.h:356:1: note: 'zmq_recv' declared here
ZMQ_EXPORT int zmq_recv (void *s, void *buf, size_t len, int flags);
^
/usr/local/include/zmq.h:67:27: note: expanded from macro 'ZMQ_EXPORT'
#       define ZMQ_EXPORT __attribute__ ((visibility("default")))
                          ^
rbzmq.c:1602:38: error: too few arguments to function call, expected 4, have 3
        rc = zmq_recv (s, &msg, flags);
             ~~~~~~~~                ^
/usr/local/include/zmq.h:356:1: note: 'zmq_recv' declared here
ZMQ_EXPORT int zmq_recv (void *s, void *buf, size_t len, int flags);
^
/usr/local/include/zmq.h:67:27: note: expanded from macro 'ZMQ_EXPORT'
#       define ZMQ_EXPORT __attribute__ ((visibility("default")))
                          ^
rbzmq.c:1675:50: error: use of undeclared identifier 'ZMQ_HWM'
    rb_define_const (zmq_module, "HWM", INT2NUM (ZMQ_HWM));
                                                 ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:973:35: note: expanded from macro 'INT2NUM'
# define INT2NUM(v) INT2FIX((int)(v))
                                  ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:225:45: note: expanded from macro 'INT2FIX'
#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))
                                            ^
rbzmq.c:1676:51: error: use of undeclared identifier 'ZMQ_SWAP'
    rb_define_const (zmq_module, "SWAP", INT2NUM (ZMQ_SWAP));
                                                  ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:973:35: note: expanded from macro 'INT2NUM'
# define INT2NUM(v) INT2FIX((int)(v))
                                  ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:225:45: note: expanded from macro 'INT2FIX'
#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))
                                            ^
rbzmq.c:1683:57: error: use of undeclared identifier 'ZMQ_MCAST_LOOP'
    rb_define_const (zmq_module, "MCAST_LOOP", INT2NUM (ZMQ_MCAST_LOOP));
                                                        ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:973:35: note: expanded from macro 'INT2NUM'
# define INT2NUM(v) INT2FIX((int)(v))
                                  ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:225:45: note: expanded from macro 'INT2FIX'
#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))
                                            ^
rbzmq.c:1698:64: error: use of undeclared identifier 'ZMQ_RECOVERY_IVL_MSEC'
    rb_define_const (zmq_module, "RECOVERY_IVL_MSEC", INT2NUM (ZMQ_RECOVERY_IVL_MSEC));
                                                               ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:973:35: note: expanded from macro 'INT2NUM'
# define INT2NUM(v) INT2FIX((int)(v))
                                  ^
/Users/apple/.rbenv/versions/1.9.3-p484/include/ruby-1.9.1/ruby/ruby.h:225:45: note: expanded from macro 'INT2FIX'
#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))
                                            ^
16 errors generated.
make: *** [rbzmq.o] Error 1

Gem files will remain installed in /Users/apple/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/zmq-2.1.4 for inspection.
Results logged to /Users/apple/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/zmq-2.1.4/./gem_make.out.

I did a brew install zmq successfully and i learned from the error log that bundler could find zmp as well.
Is there any dependencies I missed here ? Please help.

A:

The idea of the answer came from this blog http://blog.cuberoot.in/installing-zmq-gem-on-mountain-lion-mac-os-x/. I just resolved it in different way.
This is what is being mentioned in the blog

it turned out that the zmq gem is not updated for the latest stable version 3.2.2 of ZeroMQ, it works (basically installs) with version 2.2.0.

so the zmq gem works well with version 2.2.0
I remove all my zeromq from brew like this
brew uninstall zeromq

Then I search for other versions of zeromq
brew search zeromq

I got this result from brew search 
homebrew/versions/zeromq22  homebrew/versions/zeromq32                       
zeromq homebrew/versions/zeromq3  homebrew/versions/zeromq405

Luckily brew still supports zeromq22. let's just install it
brew install homebrew/versions/zeromq22

Then I try to install the gem again
gem install zmq -v 2.1.4

but I still got  the following errors:
gem install zmq -v 2.1.4
Building native extensions.  This could take a while...
ERROR:  Error installing zmq:
ERROR: Failed to build gem native extension.

    /Users/ilab/.rbenv/versions/1.9.3-p484/bin/ruby extconf.rb
checking for zmq.h... no
checking for zmq.h in /opt/local/include,/usr/local/include,/usr/include... no
extconf.rb:36:in `<main>': Couldn't find zmq library. try setting --with-zmq-dir=<path> to tell me where it is. (RuntimeError)      

It seems like the zmq gem could not find the zeromq. then I try to do again with the lastest zeromq.
brew install zeromq

then the zmq gem knows the zeromq installed. so I think there should be something wrong with brew install and link. I forced the brew to link back to zeromq22 as below:
brew link --overwrite zeromq22 --force 

and try to install the gem again. It works!

