无法加载这样的文件 – 在rails上的sqlite3 / sqlite3_native(LoadError)
我是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>'
find你的sqlite3 gemspec文件。 一个例子是/usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec
Windows: C:\Ruby21\lib\ruby\gems\2.1.0\specifications
。
你应该根据你的Rubygempath和sqlite3版本进行调整。 编辑上面的文件并查找以下行
s.require_paths=["lib"]
改变它
s.require_paths= ["lib/sqlite3_native"]
请参阅: https : //stackoverflow.com/a/39136421/6755206
幸运的是,你不必切换到ruby2.0
有这个问题的解决scheme,经过无休止的尝试…
https://github.com/hwding/sqlite3-ruby-win
脚步
预
-
gem uninstall sqlite3 --all
资源
- 下载最新的sqlite3-ruby, https://github.com/sparklemotion/sqlite3-ruby
- 解压缩包
build立
- 在提取的目录中运行命令行
- 确保你已经安装了你的C编译器并添加到了PATH中
-
gem install bundler
-
bundle install
-
rake native gem
- 你会发现生成一个名为“pkg”的dir
安装
- inputdir'pkg'
-
gem install --local sqlite3-xxx.gem
('xxx'是版本号)
检查
-
irb
-
require 'sqlite3'
卸载并重新安装sqlite3 gem为我工作。
gem uninstall sqlite3 bundle
如果最上面的答案不起作用,我发现的一个修复只是去你的Gemfile,并在sqlite3之后添加版本号1.3.11(而不是1.3.9)。 所以你的Gemfile中的行现在应该是:
# Use sqlite3 as the database for Active Record gem 'sqlite3', '1.3.11'
没有编译的源代码或下载预编译的库将解决这个问题,相信我我试了一切,问题在别的地方。 这是它如何在Windows上工作:
bundle update sqlite3
在这个关于nokogiri后,你可能会得到另一个类似的错误,修复它的命令:
bundle update nokogiri
享受你的Ruby应用程序!
这也发生在我身上。 事实certificate,我原来安装了SQLite 1.3.10,但后来我从Rails教程screencasts项目中复制了一些gem,它列出了SQLite 1.3.9。 然后我得到了同样的错误。 我改回到1.3.10,它的工作。
(这是在Windows 7上。我正在Cloud9 IDE上运行屏幕录像教程)。