Thin LoadError: нет такого файла для загрузки thin_parser - PullRequest
4 голосов
/ 21 марта 2011

Я установил thin и пытаюсь сделать thin start, что в итоге приводит к этой ошибке

C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- C:/Ruby192/lib/ruby/gems/1.9.1/gems/thin-1.2.8-x86-mingw32/lib/1.9/thin_parser (LoadError)
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/thin-1.2.8-x86-mingw32/lib/thin.rb:48:in `rescue in <top (required)>'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/thin-1.2.8-x86-mingw32/lib/thin.rb:43:in `<top (required)>'
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/thin-1.2.8-x86-mingw32/bin/thin:5:in `<top (required)>'
    from C:/Ruby192/bin/thin:19:in `load'
    from C:/Ruby192/bin/thin:19:in `<main>'

Может кто-нибудь помочь мне, пожалуйста, спасибо заранее

Ответы [ 2 ]

5 голосов
/ 25 марта 2011

вывод обозначает каталог с именем 1.9, т. Е.

<ruby_install_dir>/lib/ruby/gems/1.9.1/gems/thin-1.2.8-x86-mingw32/lib/1.9/

Примечание. Моя тонкая версия - 1.2.10.Далее я буду использовать путь, как он отображается в моей системе.

По какой-то причине тонкий драгоценный камень не поставляется с этим каталогом.Но файл с именем thin_parser.so находится в родительском каталоге <ruby_install_dir>/lib/ruby/gems/1.9.1/gems/thin-1.2.10/lib/

Поэтому мое первое решение было создать каталог 1.9 и скопировать в него файл thin_parser.so.Теперь thin start работает для меня.

В качестве альтернативы вы можете отредактировать файл <ruby_install_dir>/lib/ruby/gems/1.9.1/gems/thin-1.2.10/lib/thin.rb и изменить

if Thin.win?
  # Select proper binary under Windows
  major_ruby_version = RUBY_VERSION[/^(\d+\.\d+)/]
  require "#{Thin::ROOT}/#{major_ruby_version}/thin_parser"
else
  require "#{Thin::ROOT}/thin_parser"
end

на

if Thin.win?
  # Select proper binary under Windows
  major_ruby_version = RUBY_VERSION[/^(\d+\.\d+)/]
  require "#{Thin::ROOT}/thin_parser"
else
  require "#{Thin::ROOT}/thin_parser"
end

или даже проще

require "#{Thin::ROOT}/thin_parser"

Я не уверен, какой обходной путь лучше, так как я не знаю, какие еще файлы ожидают в несуществующем каталоге.Я тоже не знаю, где Thin.win?вилка становится важной.

Я решил в пользу первого решения.Но оба пути решили проблему для меня.

С наилучшими пожеланиями,
Тим

0 голосов
/ 08 марта 2015

Я столкнулся с той же ошибкой при запуске rake db:migrate (я подозреваю, что тонкий старт дал бы мне ту же ошибку.)

Я использую Amazon Linux (на основе rpm, очень похож на CentOS и Redhat). Ранее я установил thin как root (gem install thin). Хотя это может не иметь отношения к вашей ситуации, просто для полноты картины я также установил eventmachine, используя:

gem install eventmachine --platform=ruby

Вот ошибка, которую я получил:

% rake db:migrate
rake aborted!
LoadError: cannot load such file -- thin_parser
/home/rails/.gem/ruby/1.9.1/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:251:in `require'
etc. etc.

Основываясь на приведенной выше информации, я запустил rake под strace и обнаружил, что он ищет thin_parser.so не в том месте. Я смог решить проблему, установив эту символическую ссылку (я сделал это как root, так как я установил thin как root). Очевидно, настройте путь, по которому установлена ​​ваша версия thin:

 cd /usr/local/share/gems1.9/gems/thin-1.6.3/lib
 ln -s ../ext/thin_parser/thin_parser.so .

Пуф! Это исправило это для меня.

...