developer tip

'require': 해당 파일을로드 할 수 없음 —`rails server` 실행시 'nokogiri \ nokogiri'(LoadError)

optionbox 2020. 12. 7. 08:05
반응형

'require': 해당 파일을로드 할 수 없음 —`rails server` 실행시 'nokogiri \ nokogiri'(LoadError)


DevKit을 사용하여 Windows 8.1에서 Ruby 2.2.1을 새로 설치하고 있습니다. 설치 후 다음을 실행합니다.

gem install rails
rails new testapp
cd testapp
rails server

나머지는 모두 기본값으로 둡니다.

서버를 실행하는 대신 오류 메시지가 표시되면 마지막 줄에서 프로세스가 실패합니다.

in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError)

매번 발생하고 나는 주변을 둘러보고 그것을 고치기 위해 찾은 모든 것을 시도했지만 지금까지 아무것도 작동하지 않았습니다.

여기서 문제는 무엇이며 간단한 테스트 Rails 앱이 작동하도록하려면 어떻게해야합니까?


Nokogiri는 아직 Windows에서 Ruby 2.2를 지원하지 않습니다. 다음 릴리스가됩니다. 참조 https://github.com/sparklemotion/nokogiri/issues/1256를

Nokogiri는 Windows에서 기본 빌드 (예 : devkit 사용)를 지원하지 않습니다. 대신 미리 빌드 된 DLL을 포함하는 gem을 제공합니다.

여기에서 devkit 빌드 지원 주제에 참여하거나 시청할 수있는 토론이 있습니다 : https://github.com/sparklemotion/nokogiri/issues/1190


  1. 먼저 현재 가지고있는 Nokogiri 버전을 제거하십시오.

    gem uninstall nokogiri
    
  2. 다운로드 노코 기리 1.6.6.2 (64) 또는 노코 기리 1.6.6.2 (86)

  3. 다음을 사용하여이 버전을 로컬에 설치합니다.

    gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem
    

    또는 32 비트 Ruby를 실행중인 경우 :

    gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem
    

    경로는 파일을 다운로드 한 위치에 따라 다를 수 있습니다.

을 사용하여 서버를 다시 시작하면 ruby bin\rails server작동합니다.


Mike Dalessios와 Julios가 혼합 된 Windows 10에서 Ruby 2.2로 Nokogiri를 실행했습니다.

  1. Nokogiri의 github repo 에서 최신 버전의 Nokogiri를 찾으십시오 .
  2. 을 실행 gem uninstall nokogiri합니다.
  3. gem "nokogiri", ">= 1.6.7.rc"Gemfile에 추가 하십시오.
  4. 을 실행 bundle install합니다.
  5. bundle update nokogiri번들이 일부 버전에서 Nokogiri를 잠근 경우 실행하십시오 .

여기에 이미지 설명 입력

고치다

  1. 번들 설치 (Nokogiri 파일 가져 오기)
  2. 찾아보기 ruby_dir\lib\ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
  3. 열다 extconf.rb
  4. 추가 dir_config('iconv').any? or pkg_config('libiconv')#376
  5. Mega에서 다운로드 MinGW64MSYS폴더
  6. PATHWindows에서 추가 ( Devkit경로 참조 제거 -작동하지 않음)
  7. 다운로드 libxml2, libxslt, iconv라이브러리 (또는 여기 )
  8. ruby extconf.rb --platform=ruby --n --use-system-libraries다운로드 한 라이브러리 참조 실행
  9. 운영 make
  10. 운영 make install

단계

번들 설치

첫 번째 단계는 것입니다 번들 .

이렇게하면 nokogiri미리 패키지 된 컴파일러 (대부분 Windows에서는 작동하지 않음)를 실행하지 않고 시스템에 gem을 넣을 수 있습니다.

그러면 Nokogiri가 설치된 것으로 표시 됩니다 .

여기에 이미지 설명 입력

검색

받는 사람 찾아 nokogiri찾아, 폴더 ext/nokogiri/extconf.rb:

여기에 이미지 설명 입력

열다 extconf.rb

... 그리고 추가 dir_config('iconv').any? or pkg_config('libiconv')#376

여기에 이미지 설명 입력

표준 노코 기리은의 "의지"설치 libxml2의 포함 iconv- 우리는 그렇지 명시 적으로 정의 할 필요가 iconv.h is missing오류가 발생합니다.

툴체인 추가

devkit이것을 위해 사용하지 마십시오 -작동하지 않습니다.

다음이 필요합니다 MinGW.

여기에 이미지 설명 입력

Mega에 내 정확한 폴더 MinGW64MSYS64폴더 압축했습니다 (키 :)!FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA :

여기에 이미지 설명 입력

PATH에 추가

그러면 gcc& make(둘 다 필수)에 액세스 할 수 있습니다 .

여기에 이미지 설명 입력

devkit경로 에서 참조를 제거하고 다음을 추가하십시오.

  • MINGW64_PATH / bin
  • MSYS64_PATH / bin

라이브러리 다운로드

Mega에 libs를 추가했습니다.

여기에 이미지 설명 입력

여기에서 압축을 풉니 다.

여기에 이미지 설명 입력

모든 libs는 이 소스 에서 가져온 것입니다 .

운영 extconf.rb

libs가 시스템에 있으면 실행 ruby extconf.rb하여 빌드를 구성 할 수 있습니다 .

여기에 이미지 설명 입력

32 비트

ruby extconf.rb --platform=ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/iconv-1.14-win32-x86 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxslt-1.1.28-win32-x86

64 비트

#64 ruby extconf.rb --platform=ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/iconv-1.14-win32-x86_64 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxslt-1.1.28-win32-x86_64

make

여기에 이미지 설명 입력

" Error 1 (ignored)" 로 표시되는 한 오류 / 경고가 발생할 수 있습니다 .

그 후 다음을 사용하십시오 make install.

여기에 이미지 설명 입력

그런 다음 Rails 설치를 찾아 다음을 실행합니다 rails s.

여기에 이미지 설명 입력


설명

컨텍스트를 제공하려면 :

Windows의 Ruby 2.2 이상은 Nokogiri에 필요한 확장을 컴파일하지 않습니다 .

gem 확장 은 사용하는 추가 종속성 (라이브러리)입니다.

gem 설치할 때 빌드됩니다 .

여기에 이미지 설명 입력


확장

확장 기능이 없기 때문에 Nokogiri가 실행되지 않습니다.

확장 기능 ext은 gem 폴더 에 있습니다 (여기에서 읽을 수 있습니다 ).

여기에 이미지 설명 입력

Mysql2,RMagick,PGSQL, Nokogiri etc all use extensions/libraries.

This is why - on Windows - you have to use custom switches (--with-opt-dir) when installing the gem. This gives Ruby / the shell / (cmd) the required lib / include directories required to build the gem's files (it's the equivalent of how PATH works).

On Linux/Mac, these directories are managed with the respective package managers (brew/apt-get). Windows does not have this, so you have to install the extensions manually.

Because Windows does not have a standard set of libraries, you have to download them yourself. You also have to build them yourself (which is tricky).

Nokogiri 설치에 대한 수정 사항은 올바른 라이브러리를 사용하고 도구를 빌드하여 gem을 설치하는 것입니다.


짓다

Ruby 2.2+와의 차이점은 gem이 예외없이 "설치"된다는 것입니다. 당신은 그것이 설치되었다고 생각하지만 Rails 가로 드되지 않는다는 것을 발견하기 위해 (따라서 nokogiri/nokogiri.so오류).

즉, 시스템에 파일이 있는지 확인하고 컴파일러를 실행하여 설치해야합니다.

위의 문서는 그 방법을 보여줄 것입니다.

참고 URL : https://stackoverflow.com/questions/28999906/require-cannot-load-such-file-nokogiri-nokogiri-loaderror-when-running

반응형