0

github のすべての手順と、Ruby on Rails のインストールに関する公式ドキュメントに従いました。sqlite3 の gem をインストールしました。また、sqlite の dll と def ファイルと .exe ファイルを Ruby/bin にコピーしてから、myapp というサンプル アプリを作成し、コマンド「rails server」でサーバーを起動しようとしました。

次のエラーが発生します。

F:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:i
n `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/s
qlite3.rb:6:in `rescue in <top (required)>'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/s
qlite3.rb:2:in `<top (required)>'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:72:in `require'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:72:in `block (2 levels) in require'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:70:in `each'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:70:in `block in require'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:59:in `each'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler/runti
me.rb:59:in `require'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.4/lib/bundler.rb:13
2:in `require'
        from F:/myapp/config/application.rb:7:in `<top (required)>'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/comma
nds.rb:24:in `require'
        from F:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/comma
nds.rb:24:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

これは、「バンドル リスト」コマンドの出力です。

F:\myapp>bundle list
Gems included by the bund
  * actionmailer (3.2.13)
  * actionpack (3.2.13)
  * activemodel (3.2.13)
  * activerecord (3.2.13)
  * activeresource (3.2.1
  * activesupport (3.2.13
  * arel (3.0.2)
  * builder (3.0.4)
  * bundler (1.3.4)
  * coffee-rails (3.2.2)
  * coffee-script (2.2.0)
  * coffee-script-source
  * erubis (2.7.0)
  * execjs (1.4.0)
  * hike (1.2.1)
  * i18n (0.6.1)
  * journey (1.0.4)
  * jquery-rails (2.2.1)
  * json (1.7.7)
  * mail (2.5.3)
  * mime-types (1.22)
  * multi_json (1.7.2)
  * polyglot (0.3.3)
  * rack (1.4.5)
  * rack-cache (1.2)
  * rack-ssl (1.3.3)
  * rack-test (0.6.2)
  * rails (3.2.13)
  * railties (3.2.13)
  * rake (10.0.4)
  * rdoc (3.12.2)
  * sass (3.2.7)
  * sass-rails (3.2.6)
  * sprockets (2.2.2)
  * sqlite3 (1.3.7)
  * thor (0.18.1)
  * tilt (1.3.6)
  * treetop (1.4.12)
  * tzinfo (0.3.37)
  * uglifier (1.3.0)

親切に助けてください.RoR で Web アプリケーションを作成したくてたまらないのですが、これらのエラーで立ち往生しています。前もって感謝します。

4

1 に答える 1

0

必要な実行可能ファイルと dll をhttp://www.sqlite.org/download.htmlからダウンロードし、Ruby のビン (f:\Ruby200\bin) に抽出します。


sqlite3 のソース コードを確認すると、次のようになります。

# support multiple ruby version (fat binaries under windows)
begin
  RUBY_VERSION =~ /(\d+\.\d+)/
  require "sqlite3/#{$1}/sqlite3_native"
rescue LoadError
  require 'sqlite3/sqlite3_native'
end

アプリがrequire 'sqlite3/sqlite3_native'で壊れた場合、irb を実行してそのファイルを読み込もうとすると、失敗するはずです。それを修正すると、アプリは問題なく実行されます。

%PATH% に ruby​​ バイナリへのパスを必ず含めてください。これにより、require 'sqlite3/sqlite3_native'を実行すると、実際にはそのファイルへの有効なパスが含まれます。

boot.rb ファイルに追加して試すこともできます。

$LOAD_PATH.unshift('F:/Ruby200/bin')

そのため、相対パスsqlite3/sqlite3_nativeを持つファイルが必要な場合、アプリは実際にファイルを見つけることができます。

そのファイルをロードできるようになると、それは機能するか、セグメンテーション違反で悪用されるはずです(Windows :P)

于 2013-03-31T23:38:16.323 に答える