Thin LoadError:没有这样的文件来加载thin_parser

时间:2011-03-21 16:47:26

标签: ruby-on-rails-3 thin

我已经安装了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 个答案:

答案 0 :(得分:5)

输出表示名为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在哪里?叉子变得很重要。

我决定支持第一个解决方案。但两种方式都为我解决了问题。

最好的问候,

答案 1 :(得分:0)

我在运行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.

根据以上信息,我在strace下运行rake并发现它在错误的地方寻找thin_parser.so。我能够通过安装这个符号链接来解决这个问题(我以root用户身份安装了这个,因为我以root身份安装了瘦身)。显然,请调整安装精简版本的路径:

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

噗!为我修好了。