新信息
rails console
:
Loading development environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > RUBY_VERSION
=> "1.8.7"
这里有一些非常奇怪的事情 - 提示说1.9.2
但RUBY_VERSION
显示1.8.7
。
我正在使用RVM,但我在Ubuntu上遇到Rails问题。
$ which ruby
/home/nick/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
$rvm list
rvm rubies
=> ruby-1.9.2-p290 [ i686 ]
但如果我gem env
我得到了
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.11
- RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
- INSTALLATION DIRECTORY: /home/nick/.rvm/gems/ruby-1.9.2-p290
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /home/nick/.rvm/gems/ruby-1.9.2-p290/bin
当我运行Rails时,如果我执行puts RUBY_VERSION
,则会输出1.8.7
。
事实上,在irb
中,RUBY_VERSION
提供了1.9.2
,但在rails console
中,它提供了1.8.7
。
主要问题是当它到达我的JSON样式哈希文字时失败。
我尝试了各种卸载rvm,rails,bundler等的方法,但似乎没什么用。有什么想法吗?
以下是rvm info
的输出:
ruby-1.9.2-p290:
system:
uname: "Linux ubie 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux"
bash: "/bin/bash => GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)"
zsh: " => not installed"
rvm:
version: "rvm 1.8.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]"
ruby:
interpreter: "ruby"
version: "1.9.2p290"
date: "2011-07-09"
platform: "i686-linux"
patchlevel: "2011-07-09 revision 32553"
full_version: "ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]"
homes:
gem: "/home/nick/.rvm/gems/ruby-1.9.2-p290"
ruby: "/home/nick/.rvm/rubies/ruby-1.9.2-p290"
binaries:
ruby: "/home/nick/.rvm/rubies/ruby-1.9.2-p290/bin/ruby"
irb: "/home/nick/.rvm/rubies/ruby-1.9.2-p290/bin/irb"
gem: "/home/nick/.rvm/rubies/ruby-1.9.2-p290/bin/gem"
rake: "/home/nick/.rvm/gems/ruby-1.9.2-p290/bin/rake"
environment:
PATH: "/home/nick/.rvm/gems/ruby-1.9.2-p290/bin:/home/nick/.rvm/gems/ruby-1.9.2-p290@global/bin:/home/nick/.rvm/rubies/ruby-1.9.2-p290/bin:/home/nick/.rvm/bin:/home/nick/local/node/bin:/home/nick/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
GEM_HOME: "/home/nick/.rvm/gems/ruby-1.9.2-p290"
GEM_PATH: "/home/nick/.rvm/gems/ruby-1.9.2-p290:/home/nick/.rvm/gems/ruby-1.9.2-p290@global"
MY_RUBY_HOME: "/home/nick/.rvm/rubies/ruby-1.9.2-p290"
IRBRC: "/home/nick/.rvm/rubies/ruby-1.9.2-p290/.irbrc"
RUBYOPT: ""
gemset: ""
但仍然gem env
告诉我在RubyGems环境中Ruby版本是1.8.7
。我只是不明白。
答案 0 :(得分:6)
你应该设置默认的ruby,如:
rvm use 1.9.2 --default
这将使用rvm one覆盖系统安装的ruby。
更新:
notme,谢谢你的评论
默认情况下,前导双连字符对于设置默认红宝石很重要。
下面列出详细&自我解释的例子,享受:
$ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-linux]
$rvm list
rvm rubies
ruby-1.9.2-p290 [ i386 ]
$rvm use 1.9.2 --default
Using /usr/local/rvm/gems/ruby-1.9.2-p290
$rvm list default
Default Ruby (for new shells)
ruby-1.9.2-p290 [ i386 ]
$rvm use default
Using /usr/local/rvm/gems/ruby-1.9.2-p290
$ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
$rvm list
rvm rubies
=> ruby-1.9.2-p290 [ i386 ]
答案 1 :(得分:4)
最有可能是罪魁祸首:
通过在shell中键入printenv PATH
来检查您的PATH环境变量 - / usr / bin可能出现在RVM安装它的Rubies之前 - 但是在使用RVM时你不希望这样!
如果/ usr / bin位于RVM位置之前,那么在检查程序时,需要/ usr / bin / ruby - LINUX附带的Ruby(最有可能是1.8.7) - 而不是RVM默认红宝石(1.9.2)
您可以通过询问系统which ruby
:
which ruby # this should be an RVM path! , not /usr/bin
ruby --version # you want this to be 1.9.2
/usr/bin/ruby --version # the old system default Ruby is most likely 1.8.7
~/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
~/.rvm/rubies/default/bin/ruby --version
检查您的PATH环境变量 - 在/ usr / bin
之前,确保安装RVM ruby版本的目录为FIRSTe.g。在我的PATH中,〜/ .rvm / ...首先出现,然后是/ usr / local / bin,然后是/ usr / bin(当然还有其他两个目录)
如前所述,rvm --default use 1.9.2
,因此您可以在任何新shell中获得默认的Ruby版本。
看起来您已在/ usr / local下在系统范围内安装了RVM。
升级宝石时,恕我直言,全系统安装可能会变得一团糟,并且可能会导致一些问题。
我不建议这样做!我和Wayne Seguin进行了更长时间的电子邮件讨论,甚至他还在他的环境中使用本地用户RVM。
检查RVM文档 - 它说:请注意单用户取代多用户[... RVM安装]。
这意味着如果您在系统范围内安装了RVM,并且您(意外地?)为用户帐户安装了RVM,那么对于该用户,本地安装的RVM优先。这是一个额外的陷阱,通过不首先在系统范围内安装很容易避免:)
就个人而言,我会卸载系统范围的RVM并仅为相关用户安装它,然后他们可以更轻松地自行安装他们的宝石,而不会干扰其他用户。
最后:在本地安装用户帐户时,请确保专门为正确的Ruby版本安装gem,并且不要使用sudo来安装gem!
希望这会有所帮助! 祝你好运!修改强>
如果您从RUBY_VERSION获得的输出不同于您的irb或rails控制台提示,那么编译/安装Ruby的方式肯定存在问题。 这看起来越来越像你需要重新安装RVM和你的Ruby版本1.9.2 ,但首先检查你的PATH,以确保这不是罪魁祸首。
完整性检查,检查您的LINUX安装是否存在干扰:
创建一个新的用户帐户,为该用户执行新的RVM安装并安装Ruby 1.9.2 - 然后尝试在该帐户中运行,或者是否显示相同的问题。
答案 2 :(得分:2)
您的用户目录中是否有.rvmrc
个文件?
$ cat ~/.rvmrc
=> export rvm_path="/home/nick/.rvm"
看起来应该是这样的吗?
还要检查您是否设置了.bashrc
这样的文件:
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
答案 3 :(得分:1)
尝试使用:
rvm --default use 1.9.2
答案 4 :(得分:1)
您使用Passenger或Pow运行Rails应用程序吗?如果是这样,您需要将服务器设置为使用rvm 1.9.2
请参阅此处的第2.3节,例如:http://pow.cx/manual.html#section_2
或乘客:http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/
答案 5 :(得分:1)
我会选择糟糕的gem / rails安装:
gem empty
gem update --system
gem install bundler --no-ri --no-rdoc
gem install rails --no-ri --no-rdoc
答案 6 :(得分:0)
确保您没有在RVM中使用sudo。我遇到了这样一个问题,我有两个不同的位置为Ruby和我的宝石。
答案 7 :(得分:0)
路径可能不对 - 请检查printenv PATH
答案 8 :(得分:0)
伙计,我遇到了这个确切的问题,我解决它的方法是重新安装捆绑器。 Bundler似乎将RUBY_VERSION缓存到1.8.7。
我没有使用rvm,我必须使用它来设置默认的ruby版本:
sudo update-alternatives --config ruby
sudo update-alternatives --config gem
然后,我重新安装了捆绑器,它工作正常!
希望你能用这种方法解决它