không thể tải tệp như vậy - sqlite3 / sqlite3_native (LoadError) trên ruby ​​trên đường ray


84

Khi tôi cố gắng thiết lập cài đặt cơ bản và khởi chạy máy chủ bằng Rails 4.0.0 trên Ruby 2.0.0, tôi gặp phải thông báo lỗi sau.

/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>'

Làm cách nào để tránh thông báo lỗi này và tiếp tục?


bạn đang thử cái này trên hệ điều hành nào?
Saifis 14/07/13

Có vẻ là một vấn đề cửa sổ. Các giải pháp khác nhau. Xem liệu điều này có hiệu quả với bạn stackoverflow.com/a/6126062/2576857 hay không .
Doodad

1
Nhưng có vẻ như anh ta không sử dụng cửa sổ. Có lẽ bài viết này sẽ hữu ích.
Althaf Hameez

Ồ đúng rồi, / usr / local / etc, bây giờ đã thấy điều đó, tệ thật. Từ những gì tôi tìm thấy, hầu hết mọi người gặp sự cố này là do exe và dll sqlite không có trong biến PATH, nhưng điều đó chỉ xảy ra với người dùng windows. Tôi nghĩ rằng bài báo mà bạn cung cấp nên đánh vào đầu đinh, nhưng chúng ta hãy chờ xem.
Doodad

Nếu Rails 4 và Ruby 2.1. - nhìn ở đây
đệ tử

Câu trả lời:


121

Tìm tệp gemspec sqlite3 của bạn. Một ví dụ là /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

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

Bạn nên điều chỉnh theo đường dẫn Rubygem và phiên bản sqlite3 của mình. Chỉnh sửa tệp ở trên và tìm dòng sau

s.require_paths=["lib"]

thay đổi nó thành

s.require_paths= ["lib/sqlite3_native"]

7
Đây là một lỗi tuyệt vời đối với một vấn đề không nên tồn tại ngay từ đầu, với số lượng người dùng Rails trên Windows. Tôi rất thích biết mặc dù lý do tại sao chính xác công trình này ...

1
Điều này hoạt động cho 1.3.9 nhưng không cần thiết cho 1.3.11. Tôi đang sử dụng Win7 x64.
Kidquick

3
Nó đã được trình bày và lỗi: Không thể tải 'active_record / connection_adapters / sqlite3_adapter'. Đảm bảo rằng bộ điều hợp trong config / database.yml là hợp lệ. Nếu bạn sử dụng bộ điều hợp không phải là 'mysql2', 'postgresql' hoặc 'sqlite3' hãy thêm đá quý bộ điều hợp cần thiết vào Gemfile.
Sterling Diaz

3
lỗi ở trên với bộ điều hợp dường như không thể giải quyết được, thực hiện những gì hwding đề xuất bên dưới trước tiên sẽ giúp tôi tiết kiệm khá nhiều thời gian - một lần nữa, có thể họ sẽ sửa lỗi đó trong các bản phát hành tiếp theo hoặc sửa lỗi đó trong các gói xếp chồng lên nhau như RailsInstaller ( ruby2.3.1 với devkit (kết hợp với các công cụ xây dựng), rails5.0.0.1) ps Thật không thể tin được là vấn đề này vẫn tiếp diễn, sau 2 năm - do sqlite được sử dụng theo mặc định trong ứng dụng mặc định của khung và đây là cách để giải quyết trong Guide.rubyonrails.org/getting_started.html
hello_earth

2
Hai năm? Làm thế nào về BA năm?
Warren P

19

xem :https://stackoverflow.com/a/39136421/6755206

may mắn thay, bạn không phải chuyển sang ruby ​​2.0,
có một giải pháp cho vấn đề này, sau khi cố gắng vô tận ...

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


Các bước

Pre

  • gem uninstall sqlite3 --all

Nguồn

Xây dựng

  • chạy dòng lệnh trong dir được trích xuất
  • đảm bảo rằng bạn đã cài đặt và thêm trình biên dịch C của mình vào PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • bạn sẽ tìm thấy một dir có tên 'pkg' được tạo

Tải về

  • nhập dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' là mã phiên bản)

Kiểm tra

  • irb
  • require 'sqlite3'

1
Cảm ơn @hwding. Điều này hoạt động hoàn hảo! Trong trường hợp của tôi, người dùng Windows, có vẻ như hai phiên bản sqlite3 (32 và 64 bit) được biên dịch bằng 'pkg', nhưng tôi chỉ cài đặt phiên bản 64bits (trường hợp của tôi).
aaossa

1
vâng, sau rất nhiều lần thử, đây là cách duy nhất hiệu quả .... những người khác ( reddit.com/r/rails/comments/30s1cz/… ) đề nghị chuyển sang một cái gì đó như vagrant và bỏ qua hoàn toàn Windows + Rails
hello_earth

1
Tôi xác nhận đây là giải pháp duy nhất hoạt động cho windows 10; đã thử một vài bản sửa lỗi nhưng đây là bản duy nhất hoạt động.
numediaweb

1
Tôi đã thực hiện theo các bước được đề cập, nhưng tôi không thấy bất kỳ thư mục nào được tạo với tên pkg.
Yashu Mittal 19/09/18

Làm việc cho tôi cho đến you'll find a dir named 'pkg' generatedkhi tôi không thấy một thư mục như vậy ở bất cứ đâu. Giải pháp của @Edson Momm bên dưới phù hợp với tôi.
MSC

19

yêu cầu kéo # 229 đã được hợp nhất nên sqlite3 có thể được cài đặt cho mỗi git:khóa. Có thể sử dụng sqlite3 một cách dễ dàng thông qua phần bổ sung này trong Gemfile:

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

Điều này hoạt động trên RubyInstaller-2.4 và mới hơn. Nó tự động cài đặt gói pacman cần thiết mingw-w64-x86_64-sqlite3khi bạn chạy bundler install.

Có một số gợi ý khác cho Rails trên Windows trong Câu hỏi thường gặp về RubyInstaller2 .


1
Câu trả lời này rất có ích cho những phần cài đặt ruby mới ruby phiên bản ruby 2.5.1p57 (2018/03/29 sửa đổi 63.029) và đường ray phiên bản Rails 5.2.1
KTM

1
Trong khi đó, PR đã được hợp nhất. Tôi đã cập nhật câu trả lời của mình cho phù hợp.
Lars Kanis

Để giải quyết các vấn đề SSL, tôi đã sử dụng: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt vào

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

Điều này đã giải quyết vấn đề cho tôi.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG là cái này có thật: D Chỉ có điều này phù hợp với tôi, Windows 10 là khủng khiếp đối với RoR. Cảm ơn rất nhiều!
Người dùng 987

Cũng làm việc cho tôi. Sự cố của tôi bắt đầu xảy ra sau khi cập nhật từ ruby ​​2.4 lên ruby ​​2.6 trên windows 10.
knut

Đây cũng là câu trả lời cho tôi trên Win10 Ruby 2.6 (x64). Cảm ơn bạn!
verceortix

Tôi thực sự đã phải làm điều này một vài lần. Có vẻ như bất cứ lúc nào tôi thực hiện bundle installđể cài đặt một viên ngọc mới, tôi sẽ gặp phải sự cố này một lần nữa và cần phải lặp lại các bước trên.
v Pierortix

9

Chỉ cần chỉnh sửa Gemfile và thêm gem 'sqlite3', platform: :ruby.


5

Không có việc biên dịch các nguồn hoặc tải xuống các thư viện được biên dịch trước sẽ giải quyết được vấn đề này, hãy tin tôi rằng tôi đã thử mọi thứ, vấn đề nằm ở chỗ khác. Đây là cách nó hoạt động trên windows:

bundle update sqlite3

Bạn có thể gặp một lỗi tương tự khác sau lỗi này liên quan đến nokogiri, hãy sửa nó bằng lệnh:

bundle update nokogiri

Hãy tận hưởng ứng dụng Ruby của bạn!


4

Gỡ cài đặt và cài đặt lại gem sqlite3 phù hợp với tôi.

gem uninstall sqlite3

bundle

4

Điều này đã làm việc cho tôi:

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

4

CÀI ĐẶT CHÍNH THỨC TỐT NHẤT

Tôi đang sử dụng rails 5.2.1p57, Windows 10 Chỉ cần chạy các dòng sau đã giải quyết được sự cố

gem uninstall sqlite3

và gỡ cài đặt tất cả các phiên bản đã cài đặt. một lần nữa thực hiện lệnh sau

gem install sqlite3 --platform=ruby

Bây giờ bạn đã hoàn thành. Hãy cho tôi biết nếu sự cố vẫn tiếp diễn.


3

Nếu câu trả lời hàng đầu không hoạt động, cách khắc phục mà tôi phát hiện ra chỉ đơn giản là truy cập Gemfile của bạn và thêm số phiên bản 1.3.11 (thay vì 1.3.9) ngay sau sqlite3. Vì vậy, dòng trong Gemfile của bạn bây giờ sẽ đọc:

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

2

Tôi đã gặp lỗi tương tự khi nâng cấp phiên bản Ruby của mình lên 2.5.X. Tôi theo dõi rails task --tracerằng sqlite3 không có sẵn cho phiên bản 2.5, vì vậy tôi thay đổi GemFile của gem "sqlite3" thành "sqlite3-ruby", sau khi tôi gỡ cài đặt gem "sqlite3" và cuối cùng tôi chạy bundle install.

Tôi không biết lý do là gì ... Tôi đọc rằng "sqlite3" chưa có sẵn cho ruby ​​2.5, nhưng tôi không chắc chắn.


2

Để tránh lỗi này, hãy đảm bảo rằng nó đã gem sqlite3được thêm vào Gemfile của bạn. Sau đó giải nén "exe" s và "dll" s từ liên kết tải xuống Sqlite vào thư mục bin của Ruby. Nếu vấn đề vẫn còn. Thử đi:

bundle update

gem uninstall sqlite3

Đưa ra lựa chọn giữa nhiều phiên bản của sqlite3, hãy chọn tùy chọn cuối cùng 'Tất cả các phiên bản'. Nhập số cuối cùng vào đây

Chọn gem để gỡ cài đặt:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Tất cả các phiên bản
> 3 .
.
Nếu bạn loại bỏ gem này, các phụ thuộc này sẽ không được đáp ứng.
Tiếp tục với Gỡ cài đặt? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Điều này sẽ hoạt động.

Đọc qua liên kết này để biết thêm giải thích nếu ở trên phù hợp với bạn.


1

Điều này cũng xảy ra với tôi. Hóa ra ban đầu tôi đã cài đặt SQLite 1.3.10, nhưng sau đó tôi đã sao chép một số gem từ dự án screencasts hướng dẫn Rails và nó liệt kê SQLite 1.3.9. Sau đó, tôi gặp lỗi tương tự như bạn đã làm. Tôi đã thay đổi nó trở lại 1.3.10 và nó hoạt động.

(Đây là trên Windows 7. Tôi đang chạy hướng dẫn phát màn hình trên Cloud9 IDE).


1

Đây là giải pháp duy nhất phù hợp với tôi, bắt nguồn từ bài đăng vấn đề GitHub này :

  1. Nhận phiên bản autoconf của các nguồn sqlite3 từ https://www.sqlite.org/download.html .
  2. Khởi động trình bao MSYS.
  3. Trong vị trí giải nén cho sqlite3 của bạn, chỉ định cấu hình phiên bản tĩnh để tránh giữ DLL trên PATH : ./configure --disable-shared.
  4. Xây dựng và cài đặt nó: make install DESTDIR=/c/dev/ruby/tmp. Bạn có thể thay đổi thư mục.
  5. Mở dấu nhắc lệnh của cửa sổ và chạy gem uninstall sqlite3 --allđể xóa tất cả đá quý sqlite3 hiện có.
  6. Một lần nữa trên cửa sổ lệnh của cửa sổ, xây dựng và lắp đặt đá quý sqlite3: 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. Những thư mục bao gồm và lib có thể khác nhau, vì vậy hãy kiểm tra trước.

Tôi đang sử dụng phiên bản Ruby 2.5.1 và phiên bản Rails 5.2.0 trên Windows 10.


và tập tin gemspec trong thư mục nguồn của Gem
Bilal Qadri

1

tôi đã tìm thấy nó! tôi đã thấy cái này https://www.youtube.com/watch?v=lsrzvX0qzmA
tôi đã cài đặt: Phiên bản Rails: 5.2.1 Phiên bản Ruby: 2.5.3 (x64-mingw32) Phiên bản Sqlite 1.3.13
và tôi gặp sự cố của bạn .. . giải pháp của tôi:

  1. Trong thư mục cài đặt như C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    bạn có các thư mục: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Tìm tệp
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Sao chép nó trong C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (có thể là các thư mục không tồn tại - tạo và dán)

1

Đã cập nhật

Thêm phần bên dưới vào Gemfile đã sửa cho tôi: gem 'sqlite3', '1.4.0', platform:: ruby


1

Thay đổi gem sqlite3 của bạn trong Gemfile cho điều này:

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

Sau đó chạy:

bundle install

0

Đối với người dùng OSX, điều này có thể là do sử dụng trình quản lý ruby ​​(ví dụ: rvm).

Nếu bạn chỉnh sửa ~ / .bash_profile của mình và thêm vào:

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

Bạn có thể giải quyết vấn đề này. Khởi động lại Xcode trước khi cố gắng tạo lại.

Vấn đề thực tế được theo dõi tại đây: https://openradar.appspot.com/28726736 ).

Toàn bộ tín dụng được chuyển đến: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.