【发布时间】:2012-01-11 01:52:15
【问题描述】:
昨天我试图修复 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.
Gem 列表显示(为清楚起见进行了编辑 - 请注意,mysql、rails 2.1 和乘客都显示在列表中 - 它是从 global 和 myapp21 gemsets 中获取的):
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 重新安装。向 gemset global 添加了乘客、捆绑器(不用于此项目)和 capistrano。为 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 create myapp21 - 继续在 gemset 中安装 rails 2.1.0、mysql 和其他 gem。
设置 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,而昨天我还可以这样做 - 它告诉我 rails 丢失了。
我认为正在发生的事情: 乘客正在加载 ruby,虚拟主机的东西仍在工作,但由于某种原因,它没有从 setup_load_paths 获取指令来加载基于 rvmrc 的 gemset(我不完全确定这是否会发生,但如果是的话,那就是不这样做)。
我的下一步是全新安装。刚刚把这台机器设置好,不想在这上面浪费我的周末。
【问题讨论】:
标签: ruby-on-rails rvm passenger