LoadError под управлением Mongrel с Rails3 и Ruby 1.9.2 - PullRequest
17 голосов
/ 26 октября 2010

Я новичок в программировании (ранее только html / css / design) пытаюсь начать изучать RoR через книгу Simply Rails 2. Однако я хочу начать с самых последних версий Ruby (1.9.2) и Rails (3) поэтому я вынужден все настроить без книги.Я много смотрел через гугл и на stackoverflow.Когда я запускаю rails server, он автоматически использует Webrick, но я хочу использовать Mongrel.Я установил пререлиз Mongrel через gem install mongrel --pre и удалил предыдущую версию.Я читал, что для того, чтобы заставить Mongrel работать с rails server, мне пришлось добавить gem 'mongrel' в Gemfile, но я не знаю, к какому из них я должен добавить его (я пробовал несколько, но ничего не изменилось).Поэтому я решил взглянуть на документацию монгрела через git и узнал о mongrel_rails start, когда я запускаю, что я получаю следующее:

C:\Ruby192\shovell>mongrel_rails start  
** Starting Mongrel listening at 0.0.0.0:3000  
** Starting Rails with development environment...   C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/runtime.rb:27:in
'block in setup': You have already activated mongrel 1.2.
0.pre2, but your Gemfile requires mongrel 1.1.5. Consider using bundle exec. (Gem::LoadError)  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/spec_set.rb:12:in
'block in each'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/spec_set.rb:12:in
'each'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/spec_set.rb:12:in
'each'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/runtime.rb:17:in
'setup'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler.rb:100:in
'setup'  
from C:/Ruby192/shovell/config/boot.rb:8:in '<top (required)>'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from C:/Ruby192/shovell/config/application.rb:1:in '<top (required)>'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from C:/Ruby192/shovell/config/environment.rb:2:in '<top (required)>'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from <internal:lib/rubygems/custom_require>:29:in 'require'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:147:in
'rails'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:116:in
'block (2 levels) in run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:149:in
'call'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:149:in
'listener'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:102:in
'block in run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:50:in
'call'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:50:in
'initialize'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:86:in
'new'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:86:in
'run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/command.rb:210:in
'run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:282:in
'<top (required)>'  
from C:/Ruby192/bin/mongrel_rails:19:in 'load'  
from C:/Ruby192/bin/mongrel_rails:19:in '<main>'` 

Мое лучшее предположение, что C:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.0.rc.6/lib/bundler/runtime.rb:27:in 'block in setup': You have already activated mongrel 1.2. 0.pre2, but your Gemfile requires mongrel 1.1.5. Consider using bundle exec. является ключом, но я не смогчтобы решить эту проблему.

Я был бы признателен за любую помощь, чтобы я мог приступить к изучению языка!

РЕДАКТИРОВАТЬ: Мне удалось обойти вышеупомянутую проблемуспасибо @duddle, но теперь у меня есть другая проблема ... Я получаю эту ошибку:

C:\Ruby192\shovell>mongrel_rails start  
** Starting Mongrel listening at 0.0.0.0:3000  
** Starting Rails with development environment...   C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:239:in
'req uire': no such file to load -- dispatcher (LoadError)  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:239:in 'block in require'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:225:in 'block in load_dependency'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:591:in 'new_constants_in'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:225:in 'load_dependency'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0.rc2/lib/active_support/dependencies.rb:239:in 'require'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:148:in 'rails'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:116:in' block (2 levels) in run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:149:in 'call'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:149:in 'listener'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:102:in' block in run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:50:in 'call'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/configurator.rb:50:in 'initialize'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:86:in 'new'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:86:in'run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/command.rb:210:in 'run'  
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/bin/mongrel_rails:282:in '<top (required)>'  
from C:/Ruby192/bin/mongrel_rails:19:in 'load'  
from C:/Ruby192/bin/mongrel_rails:19:in '<main>

На данный момент я предпочитаю (1 утра ... очень устал), что мне не хватает файла иличто-то не названо так, как должно быть ... возможно, мне нужно использовать действие :require в моем Gemfile ... может, мне просто нужно спать на нем.Ха.

Опять же, большое спасибо @duddle за то, что вытащили меня из-за первой ошибки!Любая дополнительная помощь очень ценится!

Ответы [ 6 ]

32 голосов
/ 26 октября 2010

Вы уже активировали монгрела 1.2. 0.pre2, но для вашего Gemfile требуется монгрел 1.1.5. Рассмотрите возможность использования комплекта Exec. это ключ, но я не смог его решить.

Вы были почти там!

gem 'mongrel', '>= 1.2.0.pre2'

Второй параметр указывает компоновщику требовать версию, равную или выше 1.2.0.pre2, которую вы должны использовать при использовании Ruby 1.9.2.

На странице Bundler есть хорошая справка о том, как использовать Gemfile: http://gembundler.com/gemfile.html

5 голосов
/ 06 декабря 2010

На всякий случай, если вы не поняли.

Я запустил gem install 'dispatcher' и добавил gem 'dispatcher' в Gemfile моего приложения. Тогда все было хорошо.

Из небольшого опыта работы с ruby, каждый раз, когда у меня возникает проблема «требуется - нет такого файла для загрузки». Это потому, что мне не хватает определенного драгоценного камня.

Hth ...

4 голосов
/ 01 февраля 2011

добавьте эту строку в ваш гем-файл:

gem 'mongrel', '>= 1.2.0.pre2'

в командной строке:

пробег bundle install

Запустите Mongrel, используя эту команду:

rails server
0 голосов
/ 07 июня 2012

Попробуйте установить его, используя:

gem install mongrel --pre

Это сработало для меня идеально !!!

0 голосов
/ 18 марта 2011

Драгоценный камень монгрел не совместим с Ruby 1.9.2;на его месте вам придется использовать камень 'sho-mongrel'.

0 голосов
/ 21 декабря 2010

Эй, я столкнулся с этой проблемой, решение было довольно простым:

Просто добавьте драгоценный камень 'dispatch'

; -)

...