Rails 2.1.0 Gem Missing - RVM,Passenger,Apache

时间:2011-12-01 22:52:07

标签: ruby-on-rails rvm passenger

昨天我试图修复readline控制台问题(慢速复制/粘贴在irb中),这是我无法解决的问题 - 但是我的rvm设置也一定搞错了。

Ubuntu 11.10。

首先我的问题:无法通过虚拟主机加载网站,只能加载脚本/服务器。通过虚拟主机加载时,我得到了这个:

Missing the Rails 2.1.0 gem. Please `gem install -v=2.1.0 rails`,
update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails
version you do have installed, or comment out RAILS_GEM_VERSION to use
the latest version installed.

宝石列表显示(为清晰起见编辑 - 请注意列表中的mysql,rails 2.1和乘客显示 - 它是从全局和myapp21宝石集中获取的):

tom@DEVPC2:/var/www/myapp$ gem list

*** LOCAL GEMS ***
....
actionmailer (2.1.0)
actionpack (2.1.0)
activerecord (2.1.0)
activeresource (2.1.0)
activesupport (2.1.0)
bundler (1.0.21)
capistrano (2.9.0)
mysql (2.8.1)
passenger (3.0.11)
rack (1.3.5)
rails (2.1.0)
rake (0.9.2.2)
...

所以,以下是我到目前为止所尝试的内容:

我已经完全删除了所有gemsets,rubys(只有一个,1.8.7),然后是rvm本身。从guide重新安装。添加了乘客,捆绑器(不用于此项目),以及capistrano到gemset global。安装了apache2的乘客模块(passenger-install-apache2-module),按照说明将负载乘客添加到/etc/apache2/apache2.conf:

LoadModule passenger_module /home/tom/.rvm/gems/ruby-1.8.7-p352@global/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/tom/.rvm/gems/ruby-1.8.7-p352@global/gems/passenger-3.0.11
PassengerRuby /home/tom/.rvm/wrappers/ruby-1.8.7-p352@global/ruby

然后:rvm gemset创建myapp21 - 继续安装rails 2.1.0,mysql,其他宝石到gemset。

设置myapp / .rvmrc:

rvm use ruby-1.8.7-p352@myapp21

和config / setup_load_paths.rb:

if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
  begin
    rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
    rvm_lib_path = File.join(rvm_path, 'lib')
    $LOAD_PATH.unshift rvm_lib_path
    require 'rvm'
    RVM.use_from_path! File.dirname(File.dirname(__FILE__))
  rescue LoadError
    # RVM is unavailable at this point.
    raise "RVM ruby lib is currently unavailable."
  end
end

我有我的虚拟主机:

tom@DEVPC2:/var/www/myapp$ cat /etc/apache2/sites-enabled/myapp.local 
<VirtualHost *:80>
   ServerName myapp.local
   RailsEnv development
   DocumentRoot /var/www/myapp/public
   <Directory /var/www/myapp/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

现在有些信息:

tom@DEVPC2:/var/www/myapp$ rvm info    
ruby-1.8.7-p352@myapp21:

  system:
    uname:       "Linux DEVPC2 3.0.0-13-generic-pae #22-Ubuntu SMP Wed Nov 2 15:17:35 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.10.0-pre by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]"

  ruby:
    interpreter:  "ruby"
    version:      "1.8.7"
    date:         "2011-06-30"
    platform:     "i686-linux"
    patchlevel:   "2011-06-30 patchlevel 352"
    full_version: "ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]"

  homes:
    gem:          "/home/tom/.rvm/gems/ruby-1.8.7-p352@myapp21"
    ruby:         "/home/tom/.rvm/rubies/ruby-1.8.7-p352"

  binaries:
    ruby:         "/home/tom/.rvm/rubies/ruby-1.8.7-p352/bin/ruby"
    irb:          "/home/tom/.rvm/rubies/ruby-1.8.7-p352/bin/irb"
    gem:          "/home/tom/.rvm/rubies/ruby-1.8.7-p352/bin/gem"
    rake:         "/home/tom/.rvm/gems/ruby-1.8.7-p352@global/bin/rake"

  environment:
    PATH:         "/home/tom/.rvm/gems/ruby-1.8.7-p352@myapp21/bin:/home/tom/.rvm/gems/ruby-1.8.7-p352@global/bin:/home/tom/.rvm/rubies/ruby-1.8.7-p352/bin:/home/tom/.rvm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    GEM_HOME:     "/home/tom/.rvm/gems/ruby-1.8.7-p352@myapp21"
    GEM_PATH:     "/home/tom/.rvm/gems/ruby-1.8.7-p352@myapp21:/home/tom/.rvm/gems/ruby-1.8.7-p352@global"
    MY_RUBY_HOME: "/home/tom/.rvm/rubies/ruby-1.8.7-p352"
    IRBRC:        "/home/tom/.rvm/rubies/ruby-1.8.7-p352/.irbrc"
    RUBYOPT:      ""
    gemset:       "myapp21"

使用脚本/服务器允许我加载到localhost:3000(或指定的任何端口)。但我无法加载myapp.local,就在昨天我能够做到 - 它告诉我轨道丢失了。

我相信发生了什么: Passenger正在加载ruby,虚拟主机的东西仍在工作,但由于某种原因,它没有从setup_load_paths获取指令来加载我的gemset基于rvmrc(我不完全确定这是发生了什么,但如果是,它是不这样做。)

我的下一步是干净安装。刚刚设置了这台机器,不想浪费我的周末。

3 个答案:

答案 0 :(得分:0)

我回去了,取走了乘客宝石,安装到全球等等。没有运气。

回到the guide并完全复制setup_load_paths和.rvmrc(好了,并改为适合我的路径),现在可以正常工作了。我想那里出了点问题。

答案 1 :(得分:-1)

今天,在将Rails 2.x应用程序迁移到新服务器时,我遇到了同样的问题。原来错误不正确。 Rails 2.x应用程序中的文件boot.rb通过该消息从任何 gem错误中解救出来。

我打开了config / boot.rb并注释掉了下面的行(在这个bug中描述的问题中产生错误消息的行)。然后显示的错误变得有意义(gem的多个冲突版本 - 不是 Rails gem),我能够解决问题。

#rescue Gem::LoadError => load_error
#  $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
#  exit 1

答案 2 :(得分:-5)

由于没有人有任何想法,我本周末将我的电脑格式化了。同样的问题。

从全局卸载乘客宝石并将其放入我的特定宝石集中,使乘客安装-apache2-module使配置文件代码指向该宝石集。它现在有效,但IDK我将如何处理我的其他项目。