activerecordでデータを挿入する際にエラーが出てしまった。
受付中
回答 1
投稿
- 評価
- クリップ 0
- VIEW 293
前提・実現したいこと
ここに質問の内容を詳しく書いてください。
ドットインストールのアクティブレコードを扱う講義(https://dotinstall.com/lessons/basic_activerecord_v2/39204)
で以下のコードを実行した際に下のエラーが出てしまいました。
実現したいことはアクティブレコードを用いてユーザの名前や年齢の情報をデータベースに挿入を行いたいです。
発生している問題・エラーメッセージ
Traceback (most recent call last):
12: from main.rb:9:in `<main>'
11: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_handling.rb:51:in `establish_connection'
10: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1054:in `establish_connection'
9: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/connection_specification.rb:170:in `spec'
8: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `require'
7: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:291:in `load_dependency'
6: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `block in require'
5: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
4: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
3: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `<top (required)>'
2: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'sqlite3' (~> 1.4) - did find: [sqlite3-1.3.13] (Gem::MissingSpecVersionError)
Checked in 'GEM_PATH=/Users/haraarashi/.gem/ruby/2.6.0:/Library/Ruby/Gems/2.6.0:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0', execute `gem env` for more information
13: from main.rb:9:in `<main>'
12: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_handling.rb:51:in `establish_connection'
11: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1054:in `establish_connection'
10: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/connection_specification.rb:170:in `spec'
9: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `require'
8: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:291:in `load_dependency'
7: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `block in require'
6: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
5: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
4: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
3: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `<top (required)>'
2: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'sqlite3' (~> 1.4) - did find: [sqlite3-1.3.13] (Gem::MissingSpecVersionError)
Checked in 'GEM_PATH=/Users/haraarashi/.gem/ruby/2.6.0:/Library/Ruby/Gems/2.6.0:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0', execute `gem env` for more information
13: from main.rb:9:in `<main>'
12: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_handling.rb:51:in `establish_connection'
11: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1054:in `establish_connection'
10: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/connection_specification.rb:170:in `spec'
9: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `require'
8: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:291:in `load_dependency'
7: from /Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.2.2/lib/active_support/dependencies.rb:325:in `block in require'
6: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
5: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
4: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
3: from /Library/Ruby/Gems/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `<top (required)>'
2: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:313:in `to_specs': Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? Could not find 'sqlite3' (~> 1.4) - did find: [sqlite3-1.3.13] (LoadError)
Checked in 'GEM_PATH=/Users/haraarashi/.gem/ruby/2.6.0:/Library/Ruby/Gems/2.6.0:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0', execute `gem env` for more information
該当のソースコード
ruby
1 require 'active_record'
2 require 'pp'
3 require 'active_support/all'
4
5 # Timezoneの設定
6 Time.zone_default = Time.find_zone! 'Tokyo'
7 ActiveRecord::Base.default_timezone = :local
8 # DB情報
9 ActiveRecord::Base.establish_connection(
10 "adapter" => "sqlite3",
11 "database" => "./myapp.db"
12 )
13 #usersテーブルをオブジェクトに結びつける
14
15 #ActiveRecordの継承。UsersレコードをUserクラスのインスタンスとして扱うようにする
16 class User < ActiveRecord::Base
17 end
18
19
20 #insert
21
22 #基本的な書き方
23 user = User.new
24 user.name = "tanaka"
25 user.age = 23
26 user.save
27
28
29 #応用的な書き方
30 user = User.new(name:"sato",age:23)
31 user.save
32
33 #newとsaveを同時にする書き方
34 User.create(name:"tanaka",age:22)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'sqlite3' (~> 1.4) - did find: [sqlite3-1.3.13] (Gem::MissingSpecVersionError)
ここから読み取れる通り
gem sqlite3の1.4以上2.0未満をインストールする必要があります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2020/04/11 11:09