Updating to Rails 3.1 fails
I just installed OS X Lion with Xcode 4.1. I'm using Ruby 1.9.2 and gems version 1.5.0. When trying to upgrade from Rails 3.0.9 to 3.1, I get the following error:
$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-darwin9.8.0]
$ rails -v
Rails 3.0.9
$ gem -v
1.5.0
$ gem update rails
Updating installed gems
Updating rails
Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
/Users/me/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
creating Makefile
make
gcc -I. -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/backward -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/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 bcrypt_ext.o -c bcrypt_ext.c
In file included from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby.h:32,
from bcrypt_ext.c:1:
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:108: error: size of array ‘ruby_check_sizeof_long’ is negative
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:112: error: size of array ‘ruby_check_sizeof_voidp’ is negative
In file included from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/intern.h:29,
from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:1327,
from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby.h:32,
from bcrypt_ext.c:1:
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/st.h:69: error: size of array ‘st_check_for_sizeof_st_index_t’ is negative
bcrypt_ext.c: In function ‘bc_salt’:
bcrypt_ext.c:42: warning: implicit conversion shortens 64-bit value into a 32-bit value
make: *** [bcrypt_ext.o] Error 1
Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.2-p0/gems/bcrypt-ruby-3.0.1 f开发者_运维百科or inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.2-p0/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
Nothing to update
Does anyone know what's going on here?
Thanks!
Instead of doing "update", just do "gem install rails -v 3.1"
UPDATE: Apparently rails 3.1.0 (activemodel actually) depends on bcrypt-ruby. This dependency should be removed in 3.1.1 (see https://github.com/rails/rails/issues/2687).
If you don't want to wait, you'll need to resolve the building of bcrypt-ruby. The compiler error suggests there's a 32-bit/64-bit mismatch between ruby and the compiler. Did you install Lion over Leopard? If so you might have to rebuild all your rvm rubies and native-extension gems.
Even if you want to wait, you probably should rebuild anyway, because you'll likely run into this type of compiler issue again. As a test, try installing a native gem like: "gem install eventmachine". If you get the same errors, that's a good indicator that every native gem will have this issue.
See this page for someone who had similar problems upgrading to Snow Leopard, with explanation of the problem: http://jtigger-learning.wikidot.com/gem-install-fails-on-building-native-extensions
精彩评论