我使用rvm运行ruby 1.9.2 p180。
我试图安装rails:
sudo gem install rails
我得到了这个:
Successfully installed activerecord-3.1.3
Successfully installed activeresource-3.1.3
Successfully installed mail-2.3.0
Successfully installed actionmailer-3.1.3
Successfully installed rack-ssl-1.3.2
Successfully installed rdoc-3.12
Successfully installed railties-3.1.3
Successfully installed rails-3.1.3
22 gems installed
[BUG] cross-thread violation on rb_gc()
(null)
我一直在使用1.8.7,但想尝试使用1.9.2,因为这是事情似乎在移动和遇到这个错误。
会是什么呢?
参见RVM故障排除中的"总线错误/段故障"一节:
在我所看到的每一个案例中,到目前为止,它总是以一个带有C扩展的ruby gem/库在不同的ruby和/或架构下编译而不是试图加载它而告终。尝试卸载&重新安装带有C扩展的gems,你的应用程序使用这些扩展来查找这个bug。
不能保证这是问题所在,但要确保所有gem都是针对您运行的体系结构编译的(例如64位vs 32位)。你在文章中没有提到平台/架构。如果你运行的是OSX,请参见rb_gc中的OSX、RubyGems和跨线程违规。你可能会捡到一些1.8.7的宝石。
为什么使用RVM运行sudo gem ?
在你创建应用程序的文件夹下,你也可以创建一个带有你正在运行的ruby版本的。rvmrc文件,这样每次你进入该文件夹时,它都会切换到。rvmrc 中设置的版本。示例:rvm use rails-1.9.2-p180
install rails
rvm ruby-1.9.2-p180@myapp