質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

938閲覧

cloud9で完成させたrailsのアプリをherokuへなんとしてもデプロイしたい!

TKD_YSK

総合スコア5

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/03/15 13:50

エンジニアへの転職を目指している、学習歴半年のプログラミング初心者です。
オンラインでの教材とカリキュラムに従い、アプリを作成しながら学習を進めております。

[ 概要 ]

cloud9で作ったrailsのアプリが完成したのですが、herokuにデプロイする段階で詰まっております。

$ heroku run rails db:migrate

を実行すると、

Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

というエラーが吐き出されます。
同じようなエラーを経験した方、もしくは原因や解決策をご存知の方はいらっしゃいませんか?

[ 手順 ]

私の行った手順は以下です。
(1) 完成したアプリを”$ git commit”, “$ git push”
(2) ターミナルでherokuにログインし、”$ heroku keys:add”および“$ heroku create”
(3) “$ git push heroku master”を完了
(4) “$ heroku run rails db:migrate”を実行

すると、以下のような結果になりました。
エラー文の意味は理解しているつもりです。

ec2-user:~/environment/attendance_b (master) $ heroku run rails db:seed Running rails db:seed on ⬢ afternoon-island-87453... up, run.8412 (Free) W, [2020-03-15T09:49:56.497669 #4] WARN -- : DEPRECATION WARNING: set the 'will_paginate.previous_label' key in your i18n locale instead of editing pagination_options (called from /app/config/environment.rb:7:in `<top (required)>') W, [2020-03-15T09:49:56.497832 #4] WARN -- : DEPRECATION WARNING: set the 'will_paginate.next_label' key in your i18n locale instead of editing pagination_options (called from /app/config/environment.rb:8:in `<top (required)>') rails aborted! Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). /app/vendor/bundle/ruby/2.6.0/gems/activerecord-5.1.7/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec' /app/vendor/bundle/ruby/2.6.0/gems/activerecord-5.1.7/lib/active_record/connection_adapters/connection_specification.rb:185:in `spec' /app/vendor/bundle/ 中略 Caused by: Gem::LoadError: sqlite3 is not part of the bundle. Add it to your Gemfile. /app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem' /app/vendor/bundle/ruby/2.6.0/gems/activerecord-5.1.7/lib/active_record/connection_adapters/sqlite3_adapter.rb:10:in `<top (required)>' 後略

[ 期待していた結果
 ]

マイグレーションを済ませ、続けて”$ heroku run rails db:seed”を実行することにより、デプロイを完了させられるものと期待しておりました。
なぜなら、教材の指示に従い、以前にも同じ手順でアプリを公開したことがあるからです。

[ 推測される原因 ]

エラー文中腹のこの部分。

Caused by: Gem::LoadError: sqlite3 is not part of the bundle. Add it to your Gemfile.

・Gemfileには既にbundleしているのだが、なぜ反映してくれないのかがわからない
・herokuがsqlite3をサポートしていない可能性
・sqlite3のバージョン’1.4’以降は、ActiveRecordに対応していない
・config/database.ymlの記述が誤っている?
・Gemlife.lockに何かがあるのでは?

###[ 試したこと ]
上記の推測に基づき、以下を試しましたが、解決には至らず。

(a) Gemfile内のsqlite3のバージョンを変更してみた

前略 group :development, :test do gem 'sqlite3', '1.3.13' # バージョンを’1.3.6’, ‘1.4.2’, 無表記にし、それぞれbundleしたが、ダメ。 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :production do gem 'pg', '0.20.0' end → 同様のエラー

(b) database.ymlを書き換えてみた

# SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' # default: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.sqlite3 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3

production: <<: *default database: db/production.pg → 同様のエラー
production: <<: *default adapter: postgresql encoding: unicode pool: 5 → エラー  “PG::ConnectionBad: could not connect to server: No such file or directory”

(c) 以前にデプロイできた別アプリのGemfile.lockと見比べる

GEM remote: https://rubygems.org/ specs: actioncable (5.1.7) actionpack (= 5.1.7) nio4r (~> 2.0) websocket-driver (~> 0.6.1) actionmailer (5.1.7) actionpack (= 5.1.7) actionview (= 5.1.7) activejob (= 5.1.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) actionpack (5.1.7) actionview (= 5.1.7) activesupport (= 5.1.7) rack (~> 2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) actionview (5.1.7) activesupport (= 5.1.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) activejob (5.1.7) activesupport (= 5.1.7) globalid (>= 0.3.6) activemodel (5.1.7) activesupport (= 5.1.7) activerecord (5.1.7) activemodel (= 5.1.7) activesupport (= 5.1.7) arel (~> 8.0) activesupport (5.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) arel (8.0.0) autoprefixer-rails (9.7.4) execjs bcrypt (3.1.13) bindex (0.8.1) bootstrap-sass (3.4.1) autoprefixer-rails (>= 5.2.1) sassc (>= 2.0.0) bootstrap-will_paginate (1.0.0) will_paginate builder (3.2.4) byebug (11.1.1) coffee-rails (4.2.2) coffee-script (>= 2.2.0) railties (>= 4.0.0) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) concurrent-ruby (1.1.6) crass (1.0.6) erubi (1.9.0) execjs (2.7.0) faker (2.10.2) i18n (>= 1.6, < 2) ffi (1.12.2) globalid (0.4.2) activesupport (>= 4.2.0) i18n (1.8.2) concurrent-ruby (~> 1.0) jbuilder (2.10.0) activesupport (>= 5.0.0) jquery-rails (4.3.5) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) loofah (2.4.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) method_source (0.9.2) mini_mime (1.0.2) mini_portile2 (2.4.0) minitest (5.14.0) nio4r (2.5.2) nokogiri (1.10.9) mini_portile2 (~> 2.4.0) pg (0.20.0) puma (3.12.4) rack (2.2.2) rack-test (1.1.0) rack (>= 1.0, < 3) rails (5.1.7) actioncable (= 5.1.7) actionmailer (= 5.1.7) actionpack (= 5.1.7) actionview (= 5.1.7) activejob (= 5.1.7) activemodel (= 5.1.7) activerecord (= 5.1.7) activesupport (= 5.1.7) bundler (>= 1.3.0) railties (= 5.1.7) sprockets-rails (>= 2.0.0) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) rails-i18n (5.1.3) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) railties (5.1.7) actionpack (= 5.1.7) activesupport (= 5.1.7) method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rake (13.0.1) rb-fsevent (0.10.3) rb-inotify (0.10.1) ffi (~> 1.0) rounding (1.0.1) ruby_dep (1.5.0) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) sass-rails (5.0.7) railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) sassc (2.2.1) ffi (~> 1.9) spring (2.1.0) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) spring (>= 1.2, < 3.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.2.1) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) sqlite3 (1.3.13) thor (1.0.1) thread_safe (0.3.6) tilt (2.0.10) turbolinks (5.2.1) turbolinks-source (~> 5.2) turbolinks-source (5.2.0) tzinfo (1.2.6) thread_safe (~> 0.1) uglifier (4.2.0) execjs (>= 0.3.0, < 3) web-console (3.7.0) actionview (>= 5.0) activemodel (>= 5.0) bindex (>= 0.4.0) railties (>= 5.0) websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.4) will_paginate (3.3.0) PLATFORMS ruby DEPENDENCIES bcrypt bootstrap-sass bootstrap-will_paginate byebug coffee-rails (~> 4.2) faker jbuilder (~> 2.5) jquery-rails listen (>= 3.0.5, < 3.2) pg (= 0.20.0) puma (~> 3.7) rails (~> 5.1.6) rails-i18n rounding sass-rails (~> 5.0) spring spring-watcher-listen (~> 2.0.0) sqlite3 (= 1.3.13) turbolinks (~> 5) tzinfo-data uglifier (>= 1.3.0) web-console (>= 3.3.0) will_paginate RUBY VERSION ruby 2.6.3p62 BUNDLED WITH 1.17.3 → Diffcheckerを使い見比べたが、(おそらく)異常無し

(d) 以前herokuにデプロイしたアプリのソースコードと、とにかく見比べる

DB周りを中心に見比べたが、進展無し

###[ 環境 ]

・マシン:MacBook Air
・言語とフレームワーク:Ruby, Ruby on Rails
・開発環境:AWS Cloud9
・開発DB:sqlite3
・本番DB:postgresql

###[ その他 ]

Googleでエラー文の他に、[ heroku, デプロイ, gem, pg, sqlite3, add, loaderror, ]などのワードで検索しましたが、解決に至るような記事や情報は見つかりませんでした。
私にとっては「万策尽きた」という具合なのですが、以前できたことができなくなっただけなので、実際には単純な原因だと想像しております。
皆さまのお知恵をお貸しいただければ幸いです。
よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

herokuはSQlite3をサポートしていません。
標準だとPostgreSQL、アドオンを利用してMySQLなどを利用することができます。

アドオン:https://elements.heroku.com/addons#data-stores

SQlite⇒PostgreSQL:https://qiita.com/hmmrjn/items/e2dff8036fbbd74f049a


追記
下記でいかがでしょうか?

gem 'sqlite3', '~> 1.3.6'

https://qiita.com/Kta-M/items/254a1ba141827a989cb7

投稿2020/03/15 14:30

編集2020/03/16 12:47
no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TKD_YSK

2020/03/16 12:06

返信ありがとうございます! CLIについては存じ上げませんでしたが、知らず知らずのうちにインストール済みの状態で、作業していたようです。 実は、二つ目の記事(https://qiita.com/hmmrjn/items/e2dff8036fbbd74f049a)については、既に目を通しておりました。 私のgemfile内にある… group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :production do gem 'pg', '0.20.0' end …この部分で、「開発環境ではsqlite3、本番環境であるherokuへのデプロイにはpostgresql」を指定できているものと思っておりましたが、認識違いでしょうか? [ 上記以外に試したこと ] ・gemfile.lockを一旦全て削除してからbundle ・database.ymlおよびgemfile内で、sqliteおよびpgのバージョンを様々に指定 これでも相変わらず同じエラーが出ます。 Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). とありますので、やはりsqlite3に問題があるのだと思われますが、確かにgemfileに記述してbundleしております。 原因と解決が見つからず、引き続き先輩方のお知恵をお貸しいただきたく思う所存です。 ご協力、なにとぞよろしくお願いします。
TKD_YSK

2020/03/16 13:04

再度ご投稿いただきありがとうございます! はい、1.3.6も試したのですが、やはり同様のエラーが出されました。 「いや、ちょっとしたイージーミスがあったのかも」と考え、再度試しましたが、結果は変わらず。 また「rails serverが更新されていないからでは?」と考えサーバーを再起動してやり直しても、同様のエラー。 まだ解決には至っておりません。
TKD_YSK

2020/03/16 23:42

なるほど! ありがとうございます。 こういうコマンドラインでの対応方法もあるのですね! 帰ったら早速試してみたいと思います。
TKD_YSK

2020/03/17 02:27

解決いたしました!!! ありがとうございます!!! [ 解決手順 ] ① $ heroku apps:destroy アプリ名  誤った状態でheroku上に作られたアプリを一旦削除 ② $ heroku create アプリ名  修正済みのアプリをherokuに再度作成 ③ $ git push heroku master   $ heroku run rails db:migrate   $ heroku run rails db:seed  アプリにプッシュして、移して、データを渡して、デプロイ完了。 [ 原因 ] 誤った設定のままheroku createした領域に、マイグレートしようとしていたから。 heroku createの段階で間違っていたので、その後何をいくら修正しようが、同じエラーが出るのは当然のことだった。 …だと考えられます。 ご提示いただいた記事で、heroku apps:destroyする発想に出会わなければ、解決できませんでした。 本当にありがとうございます!
no1knows

2020/03/18 13:26

それは良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問