ruby 1.9.2 + pcap on Mac OS X - ruby

Has anyone been able to successfully use a pcap library for Ruby 1.9.2 (via rvm) on Mac OS X 10.6?
I have tried pcaprub and it seems to not behave well on Mac OS X and the pcap gem isn't compatible with ruby 1.9.2.

There's definitely some problems building the native extension stuff for the pcap gem on ruby 1.9.2 (I'm on patch 180). Mostly you can get it working by changing RUBYSTR(foo)->ptr to RUBYSTR_PTR(foo) -- that's fairly easy to macro away when you see gcc complaining.
The real problem for me is that it's blocking after the initial call in pcap_loop. I initially was able to get it to do the right thing, but it doesn't want to use the correct timeout. If I can get it working right, I'll definitely be pushing changes upstream.
Edit: see my comments here to get it building on 10.6.
Edit2: I've forked ruby-pcap and got it working on ruby 1.9.2 # patch 180 on Mac OS X 10.6.7; I will be submitting a pull request to the gem shortly. In the meantime, you can get it here

Related

Using Homebrew vs a ruby version manager on OS X?

I have a few questions about using Ruby on an OS X 10.11 El Capitan:
Do you think it is ok to modify Apple's built-in Ruby installation (as in installing or upgrading Gems), or should I install a separate ruby environment? (I had been modifying the built in one previously, but once I upgraded to El Capitan Apple undid all of my changes. I never had any problems with it before the upgrade, even when I updated the Gems that Apple included in to more recent versions. Yet I am still worried.)
I'm considering leaving Apple's built in Ruby alone and installing a separate one, leading me to my second question:
Everywhere I read on the internet, people recommend using a Ruby version manager (rbenv, RVM, and the like) to install a separate Ruby environment. I feel like it would be easier, cleaner, and more straightforward to simply use homebrew, since I use it already, to install a ruby to /usr/local. What would be some problems with using homebrew instead of a dedicated Ruby version manager? What are the advantages of using a version manager over homebrew?
Don't mess w/your system Ruby, your system needs to be stable and it's not necessary.
Homebrew isn't made to manage multiple versions of software. RVM (and others) and made to do exactly that. I currently have 6 rubies installed. I'd hate to have to manage that manually. RVM (or friends) is the way to go if you are installing Ruby on your host. People often go to the next level and use Vagrant instances to further isolate their development environment.
IMHO the most important reason to use a version manager is to be able to run multiple different versions of Ruby on the same machine e.g. to test gems with different versions or to run several (legacy and new) applications on the same development computer. Rbenv or RVM makes this easy, Homebrew doesn't support this...

Ruby gems disappear on Mac OS Jenkins slave

I have a few Mac Minis and old Mac Pros we use as Jenkins slaves for automated testing.
Occasionally gems simply disappear and I have to re-install them. This is using the built-in Ruby from Mac OS Yosemite.
Why does this happen?
I use RVM on my personal Macbook Pro, and occasionally it autonomously decides to switch to a new Ruby version, so it makes sense that it won't have all my gems. When I switch back, the gems are gone again.
As for the slaves, they don't have RVM installed, and the outcome is the same.
Could this be caused by Mac OS updates?
The gems are not installed in a Jenkins workspace, I installed them before we installed the Jenkins agent.
The Macs are shared with the test-automation team who also ssh/sudo on them, but don't do anything in Ruby because their code is Java.
Could this be caused by mac OS updates ?
It could be caused by OS updates, and this is one of the big reasons you should not use the system Ruby for your development unless you're content with leaving it plain vanilla. Rightly so, Apple considers that Ruby theirs, and they can and will stomp on it with an update if it suits their purposes and you upgrade the OS.
Instead, at a minimum, install a separate Ruby from source or via Homebrew and consider that yours. Or, investigate using rbenv or RVM on the Jenkins boxes to manage your Rubies, which is what we do. That allows builds to use different Rubies and/or sets of gems and lets you fine-tune the Ruby environment on the Jenkins box to whatever the final-destination Ruby will be.
You say your personal RVM changes on its own? Unh-uh, can't happen on its own; SOMETHING told it to change. Don't attribute that stuff to voodoo or juju, something is making those things happen such as your environment variables changed or the .rvmrc file got stomped on. If your RVM configuration is correct it should be very stable; My rbenv and RVM setups have always been very solid unless I screwed them up.
Without dumps of your gem env or rvm info there's not a whole lot we can do to help you straighten it out. In general though, it sounds like you need to treat your Jenkins hosts like they are production boxes, change them very little, and separate your assets from the vendor's.

Installing Ruby 1.8.7 on Intel MacOSX 10.5.8 - error with make

I am having problems with installing Ruby 1.8.7 using RVM on my Intel architecture MacOSX 10.5.8.
It configures & compiles properly but gives me errors during making.
I tried searching this out but am unable to get through to a solution.
My RVM is installed as single user
Links to my make.log files & my action trails can be found on this springpad note: http://sprng.me/c1s9k
I am assuming that it has got to do with my Developer tools & Xcode(version 3.1.2). I am clueless at the same time though and will appreciate any kickstart you can give me in solving this. I am keen on starting to develop my RoR apps! :D
RVM currently requires Xcode version 3.2.1 at the least. Don't go over version 4.1 though. 4.2 has some serious issues with building rubies and gems, and some of the homebrew and macports packages. They're using an llvm-gcc which is breaking a lot of things.
As for your issue here. Are you running on a 64bit machine? The error in the make logs appear to be based on the architecture type being incorrect. RVM defaults to a x86_64 architecture because the vast majority of the people using it are using 64bit machines, so RVM sets the default to that.We set this in scripts/functions/build and scripts/selector.
We also look for a variable called rvm_arch_flags where you can set the architecture flag needed for your model. This might not be an issue for you if you are using a Core 2 Duo or something similar. Are you running a PPC or something? We usually have issues awith people running Leopard because they are running the early Intels which appear to have been 32bit. You need at least the core 2 duo or xeon based machines.
Now, looking deeper into this, I would try setting rvm_arch_flag='-arch i686' in your global .rvmrc and try rebuilding. if you still run into problems come find me in the #RVM channel on freenode irc. We'll see what we can do. Please also create me a gist of rvm --trace as well.
In addition, it appears to be having problems with the version of the Tcl/Tk frameworks that comes with your Xcode. This could also be due to it being 3.1 rather than 3.2.

Is there any crossplatform GUI for Ruby that is easy to install on Mac OS?

I have some ruby scripts for end users that will be nice to have some GUI. Some of users use Windows, some Mac OS X (Snow Leopard, Lion). So i need some kind of cross-platform GUI that my users can easily install. For Windows where is built-in Tk and a number of gems that can be installed as easy as gem install wxRuby. But on MacOS i have some problems:
No built-in Tk due to 64-it nature of Snow Leopard+ and no easy way to install it.
qtRuby4 gem does not exist for Mac OS X at all.
gtk2 gem is native and fails to build on Mac OS X Snow Leopard+
wxruby gem install but will not work on 64-bit Snow Leopard+, scripts need to be executed manually in 32-bit mode.
Maybe someone can suggest some distribution / way to install GUI toolkit for ruby that will be easy to install for end users for both Windows and Mac OS X Snow Leopard / Lion? Or the wxRuby is the only way and i need to somehow make sure that end users execute scripts in 32-bit mode?
I haven't used it, but Shoes may fit the bill.
There was a Ruby GUI survey in 2008, which would need an update. Maybe it's still interesting though:
http://www.pressure.to/ruby_gui_survey/
IMHO from your list your best bet is wxRuby, sans the 32-bit limitation. An alternative way would be to wrap up your application as a lightweight web app using something like Sinatra, starting a server on localhost and telling the user where to go in the browser. That is if doing GUIs in JavaScript is your thing.
Ok, for now it seems that the easiest way will be to use Ruby-GNOME2. The instruction to configure ruby for OSX will be to install macports via standard .dmg installer and execute one command:
sudo -s "port selfupdate; port install ruby; gem install gtk2"
Of course installing something is not very user-friendly, but manual tinkering with 32-bit / 64-bit interpreter execution for wxRuby afraids me more. That will require either to modify end user system or to add some kind of bootstrapper into each script so it will check if executed on 64-bit macos and in such case relaunch itself in 32-bit interpreter.

Reinstall Ruby on OS X

I've gone and messed up Ruby on my Snow Leopard Machine. I've managed to introduce all sorts of issues and I'm having a hard time cleaning things up.
What are the steps to get me back to square one with Ruby? I'm fairly new to programming so I need it spelled out for me!
It sounds like what you probably want to do is clear out all your globally installed gems in the system Ruby. This can be done by running the following:
sudo rm -rf /Library/Ruby/Gems/*
This will leave all the gems that come with OS X (which is a good thing, since some apps may assume they're installed).
As macarthy said, I also highly recommend using a Ruby version manager (e.g. rbenv or RVM) to more easily install, remove, and manage Ruby versions.
My suggestion would be to forget about what you have and use RVM
https://rvm.io
you can basically ignore what you have installed then.

Resources