无法在rails上的ruby上加载这样的文件--sqlite3/sqlite3_native(LoadError)

Pen*_*ddy 82 sqlite ruby-on-rails

当我尝试在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>'
Run Code Online (Sandbox Code Playgroud)

如何避免此错误消息并继续进行?

Har*_*nan 119

找到你的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"]
Run Code Online (Sandbox Code Playgroud)

改为

s.require_paths= ["lib/sqlite3_native"]
Run Code Online (Sandbox Code Playgroud)

  • 考虑到Windows上Rails用户的数量,这对于首先不应该存在的问题是一个奇妙的错误.我很想知道为什么这个确实有效... (7认同)
  • 这是产生更多新错误的好方法 (4认同)
  • 它已经呈现并出错:无法加载'active_record/connection_adapters/sqlite3_adapter'.确保config/database.yml中的适配器有效.如果你使用'mysql2'之外的适配器,'postgresql'或'sqlite3'将必要的适配器gem添加到Gemfile中. (3认同)
  • 上面的错误与适配器似乎似乎无法解决,首先做hwding建议下面会节省我很长一段时间 - 但是,也许他们会在下一个版本中解决这个问题,或者修复堆栈包中的RailsInstaller( ruby2.3.​​1 with devkit(mingw with build tools),rails5.0.0.1)ps令人难以置信的是,这个问题在2年后仍然存在 - 假设默认情况下在骨架默认应用程序中使用了sqlite,并且是可行的方法在http://guides.rubyonrails.org/getting_started.html中 (3认同)
  • 两年?三年怎么样? (2认同)

hwd*_*ing 19

请参阅:https://stackoverflow.com/a/39136421/6755206

幸运的是,你不必切换到ruby 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'


Lar*_*nis 19

由于已合并了拉取请求#229,因此可以为每个git:密钥安装sqlite3 .您可以通过以下方式轻松使用sqlite3 Gemfile:

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"
Run Code Online (Sandbox Code Playgroud)

这适用于RubyInstaller-2.4及更新版本.它会mingw-w64-x86_64-sqlite3在您运行时自动安装所需的pacman软件包bundler install.

RubyInstaller2 FAQ中,Windows上的Rails还有一些提示.


小智 13

gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.

Windows 10
Ruby 2.5.3
Rails 5.2.2
Run Code Online (Sandbox Code Playgroud)


小智 9

只需编辑Gemfile并添加即可 gem 'sqlite3', platform: :ruby.


小智 5

没有编译源代码或下载预编译的库将解决这个问题,相信我,我尝试了一切,问题在于其他地方.这是它在Windows上的工作方式:

bundle update sqlite3

关于nokogiri之后你可能会遇到另一个类似的错误,用命令修复它:

bundle update nokogiri

享受您的Ruby应用!