我正在运行Tiger并且(愚蠢地)决定将Rails从1.1.6升级到1.2.6。我运行命令“sudo gem install rails --include-dependencies”,一切似乎都没问题。但是,在安装之后,当我运行命令“rails -v”时,我得到了如下所示的错误。可能是1.2.6与Tiger不兼容吗?我一直在互联网上搜索兼容性信息,但没有找到任何东西。顺便说一句,在绝望中,我试图回到1.1.6,但我仍然得到同样的错误,所以现在我已经被冲洗了。有人可以帮忙吗?感谢。
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support.rb:56
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record.rb:25
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:229:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:228:in `each'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:228:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:213:in `each'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:213:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:66:in `active_gem_with_options'
from /usr/local/lib/ruby/site
答案 0 :(得分:3)
通过你所做的,看起来你跳到了轨道2.3.2。
我建议你现在要做的就是先升级一切:
sudo gem update --system
sudo gem update
然后安装1.2.6版本。现在你将拥有1.1.6,1.2.6和2.3.2
sudo gem install rails -v1.2.6
而且,顺便问一下,你的ruby版本是什么,你使用Apple提供的版本吗?特别是,如果您运行以下两个命令,您将获得所需的信息。 (肯定会与我的不同)
$ ruby --version
ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin9]
$ which ruby
/opt/local/bin/ruby
不,与老虎没有任何不相容之处。
答案 1 :(得分:0)
当我(盲目)遵循HiveLogic的OS X RoR安装说明时,我收到此错误。你希望他们没事,因为Apple会链接到他们。 HOWEVER ,此文档中包含的二进制路径已过期!!!
特别是,RubyGems是0.9而不是1.3。列表中的其他二进制文件已过时,并带有死链接。
要解决此问题,请按照Ruby on Rails中的当前路线进行操作。您将下载并安装正确版本的RubyGems并且不错!
如果您按照HiveLogic说明进行操作,则可能需要检查所有版本。
答案 2 :(得分:0)
您可以通过在config / environment.rb顶部设置RAILS_GEM_VERSION常量来指定所需的Gem版本,例如
RAILS_GEM_VERSION = '2.3.2'
或者你可以在供应商/铁路中冻结Rails。当Rails从您的应用程序引导自己时,它将首先查看供应商/ rails,因此您可以在那里冻结您想要的版本。但我自己更喜欢RAILS_GEM_VERSION方法。