将Ruby1.9.2从p180升级到p290后,不会更新libruby动态库路径

时间:2011-09-28 18:18:47

标签: ruby-on-rails rubygems rvm upgrade dylib

我使用RVM将Ruby 1.9.2从补丁级别p180升级到p290:

rvm upgrade 1.9.2-p180 1.9.2-p290

然后,我使用这些命令来更新我的Rails gem和其他宝石

gem install rails 3.0.5
gem update

一切似乎都很好; rvm info显示所有Ruby二进制文件和gem已被移动到正确的p290路径(〜/ .rvm / * / ruby​​-1.9.2-p290 /*)。

但是,当我转到我的Rails应用程序目录并发出命令rails console时,我收到错误消息,指出gem(activesupport-3.0.5)无法加载libruby.1.9.1.dylib文件。

  

上午10:30〜/ Development / rails_projects / my_app_0515 $ rails console

     

/Users/whk/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.5/lib/active_support/dependencies.rb:239:in"requiret':dlopen(/ Users / whk /.rvm/gems/ruby-1.9.2-p290/gems/serialport-1.0.4/lib/serialport.bundle,9):未加载库:/Users/whk/.rvm/rubies/ruby- 1.9.2-p180 / lib / libruby.1.9.1.dylib(LoadError)   参考自:/Users/whk/.rvm/gems/ruby-1.9.2-p290/gems/serialport-1.0.4/lib/serialport.bundle   原因:找不到图像 - /Users/whk/.rvm/gems/ruby-1.9.2-p290/gems/serialport-1.0.4/lib/serialport.bundle   。 。

Rails无法在~/.rvm/rubies/ruby-1.9.2-p180/lib中找到dylib文件,因为p180路径不再存在,但该文件位于~/.rvm/rubies/ruby-1.9.2-p290/lib

从单独的StackOverflow post,我发现一个解决方法是将此行添加到.bashrc

export DYLD_LIBRARY_PATH="/Users/whk/.rvm/rubies/ruby-1.9.2-p290/lib:$DYLD_LIBRARY_PATH"

但是,我想了解为什么rvm ruby​​升级不会处理lib路径更改?有没有人知道更清洁的解决方案 - 从配置位置删除p180路径?

以下是我的环境:

  • Mac OS X 10.6.6(Snow Leopard)
  • rvm 1.8.4
  • ruby​​ 1.9.2p290
  • Rails 3.0.5

谢谢!

1 个答案:

答案 0 :(得分:0)

问题出在gems原生扩展中 - 他们在rvm upgrade 1.9.2-p180 1.9.2-p290期间没有重建 - 下次请仔细查看输出...它应该会给你的信息带来什么错误。

至于这个特殊用例,它足以重新安装给定的gem:

gem install serialport -v 1.0.4

...不确定是否应该先卸载