이러한 파일을로드 할 수 없습니다 — sqlite3 / sqlite3_native (LoadError) on ruby ​​on rails


84

Ruby 2.0.0에서 Rails 4.0.0을 사용하여 기본 설치 및 서버 시작을 설정하려고하면 다음 오류 메시지가 표시됩니다.

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

이 오류 메시지를 피하고 계속 진행하려면 어떻게해야합니까?


어떤 OS에서 이것을 시도하고 있습니까?
Saifis

Windows 문제인 것 같습니다. 솔루션은 다양합니다. 이것이 당신에게 도움이되는지 확인하십시오 . stackoverflow.com/a/6126062/2576857 .
Doodad 2013

1
그러나 그가 창문을 사용하는 것 같지 않습니다. 아마도이 기사 가 도움 될 것입니다.
Althaf Hameez 2013

오 예, / usr / local / etc, 지금 봤습니다. 내가 찾은 바에 따르면이 문제가있는 대부분의 사람들은 PATH 변수가 아닌 sqlite exe 및 dll 때문에 발생했지만 Windows 사용자에게만 발생했습니다. 당신이 제공 한 기사는 머리에 못을 박 아야한다고 생각 합니다만, 기다려 보겠습니다.
Doodad 2013

Rails 4 및 Ruby 2.1. - 여기를보세요
discipleartem

답변:


121

sqlite3 gemspec 파일을 찾으십시오. 한 가지 예는 /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Windows : C:\Ruby21\lib\ruby\gems\2.1.0\specifications.

Rubygem 경로 및 sqlite3 버전에 따라 조정해야합니다. 위의 파일을 편집하고 다음 줄을 찾으십시오.

s.require_paths=["lib"]

그것을 변경

s.require_paths= ["lib/sqlite3_native"]

7
이것은 Windows의 Rails 사용자 수를 고려할 때 처음부터 존재해서는 안되는 문제에 대한 환상적인 오류입니다. 나는 ...하지만 정확히 왜이 작품을 알고 싶어요

1
이것은 1.3.9에서는 작동했지만 1.3.11에서는 필요하지 않았습니다. 나는 Win7 x64에 있습니다.
Kidquick

3
이미 표시되었으며 오류 : 'active_record / connection_adapters / sqlite3_adapter'를로드 할 수 없습니다. config / database.yml의 어댑터가 유효한지 확인하십시오. 'mysql2', 'postgresql'또는 'sqlite3'이외의 어댑터를 사용하는 경우 필요한 어댑터 gem을 Gemfile에 추가하십시오.
Sterling Diaz

3
어댑터에 대한 위의 오류는 해결할 수없는 것 같습니다. hwding이 먼저 제안하는 작업을 수행하면 시간을 상당히 절약 할 수 있습니다. 다시 한 번 다음 릴리스에서 수정하거나 RailsInstaller ( ruby2.3.1 with devkit (mingw with build tools), rails5.0.0.1) ps 스켈레톤 기본 애플리케이션에서 sqlite가 기본적으로 사용된다는 점을 감안할 때 2 년 후에도이 문제가 여전히 지속된다는 것은 믿을 수없는 일입니다. 에서 guides.rubyonrails.org/getting_started.html
hello_earth

2
이년? 3 년은 어때?
Warren P

19

참조 : https://stackoverflow.com/a/39136421/6755206

다행스럽게도 루비 2.0으로 전환 할 필요가 없습니다.
끝없는 노력 끝에이 문제에 대한 해결책이 있습니다.

https://github.com/hwding/sqlite3-ruby-win


단계

사전

  • gem uninstall sqlite3 --all

출처

짓다

  • 추출 된 디렉토리에서 명령 줄 실행
  • C 컴파일러가 설치되어 있고 PATH에 추가되었는지 확인하십시오.
  • gem install bundler
  • bundle install
  • rake native gem
  • 생성 된 'pkg'라는 이름의 dir을 찾을 수 있습니다.

설치

  • 디렉토리 'pkg'를 입력하십시오.
  • gem install --local sqlite3-xxx.gem ( 'xxx'는 버전 코드입니다.)

검사

  • irb
  • require 'sqlite3'

1
감사합니다 @hwding. 이것은 완벽하게 작동합니다! 필자의 경우 Windows 사용자는 두 개의 sqlite3 버전 (32 비트 및 64 비트)이 'pkg'로 컴파일 된 것처럼 보이지만 방금 64 비트 버전 (제 경우)을 설치했습니다.
aaossa

1
예, 많은 노력 끝에 이것이 효과가 있었던 유일한 방법입니다 .... 다른 사람들 ( reddit.com/r/rails/comments/30s1cz/… )은 방랑 같은 곳으로 이동하고 Windows + Rails를 모두 건너 뛰도록 제안합니다
hello_earth

1
이것이 Windows 10에서 작동하는 유일한 솔루션임을 확인합니다. 몇 가지 수정을 시도했지만 이것이 유일한 방법입니다.
numediaweb

1
언급 된 단계에 따라 수행했지만 이름으로 생성 된 폴더가 표시되지 않습니다 pkg.
Yashu Mittal

you'll find a dir named 'pkg' generated내가 어디에서도 그런 디렉토리를 보지 못해서 나를 위해 일했습니다 . @Edson Momm의 솔루션은 저에게 효과적이었습니다.
MSC

19

이후 풀 요청 # 229 병합되었습니다, sqlite3를가 당 설치할 수 있습니다 git:키를 누릅니다. 이 추가를 통해 sqlite3를 쉽게 사용할 수 있습니다 Gemfile.

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

이것은 RubyInstaller-2.4 이상에서 작동합니다. mingw-w64-x86_64-sqlite3을 실행할 때 필요한 pacman 패키지를 자동으로 설치합니다 bundler install.

RubyInstaller2 FAQ 에 Rails on Windows에 대한 몇 가지 힌트가 더 있습니다 .


1
이 답변은 새로운 루비 설치 루비 버전에 도움이된다 루비 2.5.1p57 (2018년 3월 29일 개정 63029) 및 버전은 레일 5.2.1 레일
KTM

1
그동안 PR이 합병되었습니다. 그에 따라 답변을 업데이트했습니다.
Lars Kanis

내가 사용하는 SSL 문제를 해결하기 위해 : 보석 'sqlite3를'자식 : "자식을 : //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt

13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

이것은 나에게 문제를 해결했습니다.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG는 이것이 진짜입니다 : D 이것은 나에게만 작동하고 Windows 10은 RoR에 끔찍합니다. 감사합니다!
사용자 987

나를 위해 일했습니다. 내 문제는 Windows 10에서 Ruby 2.4에서 Ruby 2.6으로 업데이트 한 후 시작되었습니다.
knut

이것은 Win10 Ruby 2.6 (x64)에서도 저에게 해답이었습니다. 감사합니다!
vercingortix

나는 실제로 이것을 몇 번해야했다. bundle install새 gem을 설치하기 위해를 수행 할 때마다이 문제가 다시 발생하고 위의 단계를 반복해야 할 것 같습니다.
vercingortix

9

Gemfile을 편집하고 gem 'sqlite3', platform: :ruby.


5

소스를 컴파일하거나 미리 컴파일 된 라이브러리를 다운로드하면이 문제를 해결할 수 없습니다. 제가 모든 것을 시도했다고 믿습니다. 문제는 다른 곳에 있습니다. 이것은 Windows에서 작동하는 방법입니다.

bundle update sqlite3

nokogiri와 관련하여이 오류 후에 또 다른 유사한 오류가 발생할 수 있습니다. 다음 명령으로 수정하십시오.

bundle update nokogiri

Ruby 앱을 즐기십시오!


4

sqlite3 gem을 제거하고 다시 설치하는 것이 저에게 효과적이었습니다.

gem uninstall sqlite3

bundle

4

이것은 나를 위해 일했습니다.

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

4

최고의 공식 설치

레일 5.2.1p57, Windows 10을 사용하는 Im 다음 줄을 실행하면 문제가 해결되었습니다.

gem uninstall sqlite3

설치된 모든 버전을 제거하십시오. 다시 다음 명령을 실행하십시오.

gem install sqlite3 --platform=ruby

이제 끝났습니다. 문제가 지속되면 알려주세요.


3

최고 답변이 작동하지 않으면 내가 발견 한 수정 사항은 단순히 Gemfile로 이동하여 sqlite3 바로 뒤에 버전 번호 1.3.11 (1.3.9 대신)을 추가하는 것입니다. 따라서 Gemfile의 줄은 다음과 같아야합니다.

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'

2

Ruby 버전을 2.5.X로 업그레이드 할 때 동일한 오류가 발생했습니다. 저는 rails task --tracesqlite3를 버전 2.5에서 사용할 수 없다는 사실을 추적했습니다 . gem "sqlite3"을 제거한 후 gem "sqlite3"변경 사항을 "sqlite3-ruby"로 변경하고 마지막으로 bundle install.

이유가 무엇인지 모르겠습니다. "sqlite3"은 아직 루비 2.5에서 사용할 수 없다는 것을 읽었지만 확실하지 않습니다.


2

이 오류를 방지하려면 gem sqlite3Gemfile에이 추가 되었는지 확인 하십시오. 그런 다음 Sqlite 다운로드 링크 에서 "exe"와 "dll" 을 Ruby의 bin 폴더로 추출 합니다. 문제가 계속되면. 이 시도:

bundle update

gem uninstall sqlite3

sqlite3의 여러 버전 중에서 선택할 수있는 경우 마지막 옵션 '모든 버전'을 선택합니다. 여기에 마지막 번호 입력

제거 할 gem 선택 :
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. 모든 버전
> 3 .
.
이 gem을 제거하면 이러한 종속성이 충족되지 않습니다.
제거를 계속 하시겠습니까? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

작동합니다.

위의 내용이 효과가있는 경우 자세한 설명을 보려면 이 링크 를 읽으십시오 .


1

이것은 나에게도 일어났습니다. 원래 SQLite 1.3.10을 설치 한 것으로 밝혀졌지만 Rails 튜토리얼 스크린 캐스트 프로젝트에서 일부 보석을 복사하여 SQLite 1.3.9를 나열했습니다. 그런 다음 동일한 오류가 발생했습니다. 1.3.10으로 다시 변경했고 작동했습니다.

(이것은 Windows 7에 있습니다. Cloud9 IDE에서 스크린 캐스트 튜토리얼을 실행하고있었습니다.)


1

이것은 이 GitHub 문제 게시물 에서 파생 된 유일한 솔루션입니다 .

  1. https://www.sqlite.org/download.html 에서 sqlite3 소스의 autoconf 버전을 가져옵니다 .
  2. MSYS 셸을 시작합니다.
  3. sqlite3의 압축을 푼 위치에서 PATH : ./configure --disable-shared.
  4. 빌드 및 설치 : make install DESTDIR=/c/dev/ruby/tmp. 디렉토리를 변경할 수 있습니다.
  5. 창의 명령 프롬프트를 열고 실행 gem uninstall sqlite3 --all하여 기존 sqlite3 gem을 모두 제거합니다.
  6. 다시 Windows의 명령 프롬프트에서 sqlite3 gem :을 빌드하고 설치 gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib합니다. include 및 lib 디렉토리는 다를 수 있으므로 먼저 확인하십시오.

Windows 10에서 Ruby 버전 2.5.1 및 Rails 버전 5.2.0을 사용하고 있습니다.


그리고 보석의 소스 폴더에 gemspec 파일
빌랄 Qadri

1

찾았어요! 나는 이것을 https://www.youtube.com/watch?v=lsrzvX0qzmA 내가 설치 한 것을 보았다
: Rails 버전 : 5.2.1 Ruby 버전 : 2.5.3 (x64-mingw32) Sqlite 버전 1.3.13
그리고 나는 당신의 문제가있다 .. . 내 솔루션 :

  1. C : \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \와 같은 설치 폴더에
    "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"폴더가 있습니다.

  2. C : \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so 파일 찾기
  3. C : \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so에 복사합니다 (폴더가 없을 수 있음-생성 및 풀)

1

업데이트 됨

나를 위해 수정 된 Gemfile에 아래 추가 : gem 'sqlite3', '1.4.0', 플랫폼 : : ruby


1

이를 위해 Gemfile에서 sqlite3 gem을 변경하십시오.

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

그런 다음 다음을 실행하십시오.

bundle install

0

OSX 사용자의 경우 이는 Ruby 관리자 (예 : rvm)를 사용하여 발생할 수 있습니다.

~ / .bash_profile을 편집하고 다음을 추가하는 경우 :

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

문제를 해결할 수 있습니다. 다시 빌드하기 전에 Xcode를 다시 시작하십시오.

실제 문제는 여기에서 추적됩니다 : https://openradar.appspot.com/28726736 ).

전체 크레딧 : https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.