For those entranced by these benchmarks results and wanting to host Rails on Ruby 1.9 ASAP …
My testing shows Rails 2.0.1 failing on current svn/trunk installs of Ruby 1.9 on MacOSX 10.5.1.
But WEBrick works!
Ruby 1.9 build:
cd ~/src svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby-1.9 cd ruby-1.9 autoconf ./configure --prefix=/usr/local/ruby1.9 make sudo make install cd /usr/local/ruby1.9/bin/ ./ruby -v -> ruby 1.9.0 (2007-12-15 patchlevel 0) [i686-darwin9.1.0]
Rails 2.0.1 installation:
pwd -> /usr/local/ruby1.9/bin sudo ./gem install rails -> Successfully installed actionpack-2.0.1 -> Successfully installed actionmailer-2.0.1 -> Successfully installed activeresource-2.0.1 -> Successfully installed rails-2.0.1 -> 4 gems installed -> Installing ri documentation for actionpack-2.0.1... -> Installing ri documentation for actionmailer-2.0.1... -> Installing ri documentation for activeresource-2.0.1... -> Installing RDoc documentation for actionpack-2.0.1... -> Installing RDoc documentation for actionmailer-2.0.1... -> Installing RDoc documentation for activeresource-2.0.1... $
All installs nicely …
Attempting to run a Rails app (after install a few more requisite gems using above method):
$ cd /rails/my_1337_app/ $ /usr/local/ruby1.9/bin/ruby script/server => Booting WEBrick... /usr/local/ruby1.9/lib/ruby/gems/1.9/gems/activerecord-2.0.1/lib/active_record/associations/association_proxy.rb:8: warning: undefining 'object_id' may cause serious problem /usr/local/ruby1.9/lib/ruby/gems/1.9/gems/rails-2.0.1/lib/initializer.rb:224: warning: variable $KCODE is no longer effective; ignored => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2007-12-15 07:24:35] INFO WEBrick 1.3.1 [2007-12-15 07:24:35] INFO ruby 1.9.0 (2007-12-15) [i686-darwin9.1.0] [2007-12-15 07:24:35] INFO WEBrick::HTTPServer#start: pid=3386 port=3000 ## I request http://0.0.0.0:3000/ ... 500 Internal Server Error Error during failsafe response: can't convert Array into String 127.0.0.1 - - [15/Dec/2007:07:24:52 EST] "GET / HTTP/1.1" 500 60 - -> /
OK, it bombs out trying to actually process a request. But this error is really, really fast! I am actually serious saying that, the error *is* really fast.
Mongrel installation fails:
$ sudo ./gem install mongrel Password: Building native extensions. This could take a while... ERROR: Error installing mongrel: ERROR: Failed to build gem native extension. /usr/local/ruby1.9/bin/ruby extconf.rb install mongrel creating Makefile make gcc -I. -I/usr/local/ruby1.9/include/ruby-1.9/i686-darwin9.1.0 -I/usr/local/ruby1.9/include/ruby-1.9 -I. -fno-common -g -O2 -pipe -fno-common -c fastthread.c fastthread.c:13:20: error: intern.h: No such file or directory fastthread.c:349: error: static declaration of ‘rb_mutex_locked_p’ follows non-static declaration /usr/local/ruby1.9/include/ruby-1.9/ruby/intern.h:556: error: previous declaration of ‘rb_mutex_locked_p’ was here fastthread.c:366: error: static declaration of ‘rb_mutex_try_lock’ follows non-static declaration ## etc etc etc
So webrick’s all we have for now.
You can track the state of edge Rails’ 1.9 readiness in this ticket on the Rails Trac. Plugins, though, will be another matter, although some fixes are pretty easy; an early failure I’ve seen is with plugins using File.exists?('file')
which is of course deprecated in 1.9 in favour of the far, far superior File.exist?('file')
.
I like using the 1.9 console, though – it really does feel snappier, especially to load irb!
December 24th, 2007 at 6:53 pm
Ruby-core has reverted the removal of
File.exists?
. Rails is getting nearer though. All of ActiveSupport tests pass now and bitsweat and a few other contributors have been patching the other parts of Rails as well.Too bad about mongrel though, I don’t think it will be fully 1.9 compatible when ruby 1.9 is released, but at least it’s good to know that the mongrel maintainers have a plan for compatibility.
December 25th, 2007 at 11:53 pm
Chu, thanks for your comment.
Hehe, there’s no way mongrel will be ready! But that’s ok, I’m sure no-one is planning on going into production with 1.9 for a while. Like any big change, there’s sure to be little bugs popping up that no-one ever dreamt of..
Anyway seems like 1.90 is out! : )
December 30th, 2007 at 9:27 am
[...] this debate over the best way to try out Ruby 1.9 in MacOSX? Just install in /usr/local as detailed here and then set aliases in .profile: alias ruby9="/usr/local/ruby1.9/bin/ruby" alias [...]