Rails 2.1.0 Gem Missing - RVM, Пассажир, Apache

Вчера я пытался исправить проблему с консолью readline (медленная копия/вставка в irb), которую я не смог исправить, но также должен был испортить что-то плохое с моей настройкой rvm.

Ubuntu 11.10.

Сначала моя проблема: не удается загрузить веб-сайт через виртуальный хост, только скрипт/сервер. При загрузке через virtualhost я получаю следующее:

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, так и пассажирское шоу в списке - он захватывает как глобальные, так и myapp21 gemset):

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)
...

Итак, вот что я пробовал до сих пор:

Я полностью удалил все гемзеты, рубины (только один, 1.8.7), а затем сам rvm. Переустановлен из руководства. Добавлен пассажир, спутник (не используется для этого проекта) и capistrano для gemset global. Установленный пассажирский модуль для apache2 (пассажир-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 - приступил к установке 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. ****** ([removed_email]) [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, который только вчера я смог сделать - он говорит, что рельсы отсутствуют.

То, что я считаю, происходит: Пассажир загружает рубин, материал виртуального хоста все еще работает, но по какой-то причине он не захватывает директивы из setup_load_paths для загрузки моих гемземов на основе rvmrc (я не совсем уверен, что это то, что происходит, но если это так, то это не делает).

Мой следующий шаг - чистая установка. JUST получил эту машину, все настроено, не хочу терять выходные в это время.

3 ответа

Я вернулся к нему и удалил жемчуг, установил его на глобальный и т.д. Не повезло.

Вернулся к гиду и скопировал setup_load_paths и.rvmrc точно (ну и изменился в соответствии с моими путями), который теперь работает. Наверное, у меня там что-то не так.


У меня была такая же проблема сегодня при переносе приложения Rails 2.x на новый сервер. Оказывается, ошибка неверна. Файл boot.rb в приложениях Rails 2.x спасает от любой ошибки gem с этим сообщением.

Я открыл config/boot.rb и прокомментировал строки ниже (строки, которые вызывают сообщение об ошибке в проблеме, описанной в этой ошибке). Тогда отображаемая ошибка стала значимой (несколько конфликтующих версий драгоценного камня - не 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


Поскольку никто не имеет никаких идей, я отформатировал свой компьютер в эти выходные. ТА ЖЕ ПРОБЛЕМА.

Удаленный жемчуг из глобальной сети и поместил его в мой конкретный gemset, сделал модуль-install-apache2-module, который сделал код файла конфигурации для этого gemset. Сейчас это работает, но IDK, как я буду заниматься своими другими проектами.

licensed under cc by-sa 3.0 with attribution.