1

新しい空の Rails (4.0) サイトを実行すると、次のエラーが表示されます。

Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile.

devkit で構築された有効な sqlite3 gem があります。私はそのためにばかげたテストをしました:

w:...> ruby   hello.rb
hello world
test.db is done.

以下に示すように、「test.db」と呼ばれる空のデータベースも作成されます。簡単な Ruby スクリプト:

  require "sqlite3"

  puts "hello world"

  # Open a database
  db = SQLite3::Database.new "test.db"

  puts "test.db is done."

私の結論は、sqlite3 gem は正常に動作しており、レールのどこかに問題があるということです。提案や説明を歓迎します。

Gemfileに関するコメントに続くちょっとした更新:

# Use sqlite3 as the database for Active Record
gem 'sqlite3', group: [:development, :test]

さらに、bundle showコマンドを使用しましたが、これは奇妙です:

w:...> bundle show sqlite3
Could not find gem 'sqlite3'.
Did you mean sqlite3?

バンドル インストールを実行すると、出力リストに sqlite3が含まれません。Gemfile を追加する必要があり、それ以外はすべて「rails new train」コマンド (プロジェクト名はもちろん' train ') によって箱から出してすぐに生成されました。

環境は、Windows 7 64 ビット PC に Ruby v2、Rails v4 をインストールしたものです。Ruby のさまざまなバージョンを管理するための PIK があります。提案を歓迎します。事前に感謝します、ウィル。

すべてが箱から出してすぐに使用できる Rails 4/Ruby 2 構成です。理論的には新規インストールが機能するはずなので、サーバーのスタックダンプも追加しています。

Gem::LoadError (Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile.):
  activerecord (4.0.0) lib/active_record/connection_adapters/connection_specification.rb:58:in `rescue in resolve_hash_connection'
  activerecord (4.0.0) lib/active_record/connection_adapters/connection_specification.rb:55:in `resolve_hash_connection'
  activerecord (4.0.0) lib/active_record/connection_adapters/connection_specification.rb:46:in `resolve_string_connection'
  activerecord (4.0.0) lib/active_record/connection_adapters/connection_specification.rb:30:in `spec'
  activerecord (4.0.0) lib/active_record/connection_handling.rb:39:in `establish_connection'
  activerecord (4.0.0) lib/active_record/railtie.rb:175:in `block (2 levels) in <class:Railtie>'
  activesupport (4.0.0) lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
  activesupport (4.0.0) lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
  activesupport (4.0.0) lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
  activesupport (4.0.0) lib/active_support/lazy_load_hooks.rb:44:in `each'
  activesupport (4.0.0) lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
  activerecord (4.0.0) lib/active_record/base.rb:322:in `<module:ActiveRecord>'
  activerecord (4.0.0) lib/active_record/base.rb:22:in `<top (required)>'
  activerecord (4.0.0) lib/active_record/query_cache.rb:50:in `restore_query_cache_settings'
  activerecord (4.0.0) lib/active_record/query_cache.rb:43:in `rescue in call'
  activerecord (4.0.0) lib/active_record/query_cache.rb:32:in `call'
  activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
  activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__398267657__call__callbacks'
  activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
  actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
  activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
  activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
  activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
  railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
  railties (4.0.0) lib/rails/engine.rb:511:in `call'
  railties (4.0.0) lib/rails/application.rb:97:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  B:/lang/ruby/v02.00/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
  B:/lang/ruby/v02.00/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
  B:/lang/ruby/v02.00/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'
4

2 に答える 2

1

報告する 2 つのビットのニュース。PIKメーリングリストでこれについての説明を受けました:

[ Luis Lavena ] 使用している Ruby 2.0 のバージョン (「ruby -v」の正確な出力) は示されていませんが、x64 ビットであると仮定しますよね?

その場合は、Bundler のバグの影響を受けています。同じことがここで報告されました:

はい、問題は Ruby v2 64 ビットで発生しています

 w:...> ruby -v
 ruby 2.0.0p195 (2013-05-14) [x64-mingw32]
 
 w:...> bundle -v
 Bundler version 1.3.5

sparklemotionの投稿を読むと、エラーは Bundler にあります。推測されると思います。

プラス面で。Rails 4 と Ruby 2 を使用して Rails プロジェクトを作成し、次に示すように、Gemfile を変更して jdbc ドライバーを使用することで、サーバーを実行して JRuby を使用して SQLite3 を使用できます。

# Use sqlite3 as the database for Active Record
group :development, :test do
  #  gem 'sqlite3'
  gem 'activerecord-jdbc-adapter'
  gem 'jdbc-sqlite3'
end

Bundler は SQLite3 に対して何かを持っているようですね。

最後に一つだけ。Sqlite3 gem は Ruby v2 で正常にビルドされ、私のおもちゃのテスト プログラムで実証されているように動作します。これは単なる Gem であるため、Bundler の問題他の Gem で発生する可能性があります -- 注意してください。問題が発生したらすぐにアップグレードすることをお勧めします。

w:...> ruby -S gem update bundler --prerelease
Updating installed gems
Updating bundler
Fetching: bundler-1.4.0.rc.1.gem (100%)
Successfully installed bundler-1.4.0.rc.1
Parsing documentation for bundler-1.4.0.rc.1
Installing ri documentation for bundler-1.4.0.rc.1
Installing darkfish documentation for bundler-1.4.0.rc.1
Done installing documentation for bundler after 9 seconds
Gems updated: bundler

リストをチェックするだけ

w:...> bundle list
Gems included by the bundle:
    :
  * sprockets (2.10.0)
  * sprockets-rails (2.0.1)
  * sqlite3 (1.3.8)
  * thor (0.18.1)
    :

御馳走になります!

:-)

于 2013-10-29T20:41:16.107 に答える
0

あなたは持っていますか:

gem 'sqlite3'

またはこのようなもの

gem 'sqlite3', group: [:development, :test]

あなたのGemfileに?

于 2013-10-29T09:03:05.600 に答える