rvm - 由于正在引用旧的ruby,在生产中更新 ruby,现在 Rails 不会启动

  显示原文与译文双语对照的内容
0 0

刚刚通过RVM在登台服务器上更新了 ruby:


$ rvm upgrade 1.9.3-p327 1.9.3-p362

我说'是'给所有的迁移和别名问题,包括删除旧的ruby 。

现在,每当我尝试访问 Rails 应用程序时,都会从乘客获得错误:


Error message: 
dlopen(/Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle, 9): 
Library not loaded:/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/libruby.1.9.1.dylib 
Referenced from:/Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle 
Reason: image not found -/Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle

我已经安装了乘客。而且还用稍微更新过的Gemfile 运行了 cap deploy 。 但似乎还有一些关于旧 ruby的参考。 在这里发生什么事情,如何更新,或者编译,所以等都引用新的ruby? 是否有一些标志可以在 Capistrano 中指定,这将强制重新编译 Gems ( 假设这是个问题)?

编辑( 。添加一些RVM信息):

我在这台服务器上使用了 RVM RVM,因此,Gems 安装在:/Library/WebServer/rails/popup/shared/bundle/ruby/1.9.1/gems 而不是我期望的位置: /usr/local/rvm/rubies/ruby-1.9.3-p362/lib/ruby/gems/1.9.1/gems 在多用户安装中,不真正了解RVM是做什么的,但是它已经工作了。

所以poing是我不能真正 $ rvm gemset use myapp 然后 bundle install,因为我认为它不会安装在正确的目录中。

以下是 bundle install 任务期间的Capistrano 输出:


 * 2013-01-03 19:23:22 executing `bundle:install'
 * executing"cd/Library/WebServer/rails/myapp/releases/20130104032317 && bundle install --gemfile/Library/WebServer/rails/myapp/releases/20130104032317/Gemfile --path/Library/WebServer/rails/myapp/shared/bundle --deployment --quiet --without development test"

时间: 原作者:

0 0

错误是关于 /Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle 引用不存在的文件 /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/libruby.1.9.1.dylib 在大多数情况下,libruby.1.9.1.dylib 在运行时已经从 ruby 加载,这不应该发生。 因此,你可能只使用 static 编译安装了 ruby,或者它可能被破坏了。

你确定使用 ruby 1.9.3-p362? RVM为 OSX 10.8提供 1.9.3-p327,它是静态编译的( OSX上没有软件包管理器问题) 。 也许你使用了( p327 ) 版本?

至于重新安装 Gems - 还没有命令可以强制重新安装已经安装的Gems,然后只能删除 Gems 并强制安装:


cd/Library/WebServer/rails/myapp/
rm -rf shared/bundle
bundle install

原作者:
0 0

尝试 rvm list 列出所有你的ruby 版本

然后使用 rvm use <ruby version> 使用那个版本

比如:


[sameera@sameera ~]$ rvm list

rvm rubies

 ruby-1.9.2-p290 [ x86_64 ]
=> ruby-1.8.7-p357 [ x86_64 ]

rvm use rvm use ruby-1.9.2-p290

HTH

原作者:
...