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

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

ただいまの
回答率

87.77%

herokuにRailsアプリをデプロイするも、stack level too deepでheroku run rake db:migrateができない。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 962

score 28

前提・実現したいこと

ruby 2.3.1
Rails 4.2.6
mysql (開発環境)
postgresql(heroku)


Railsアプリをherokuにデプロイしています。
herokuの設定を終え、

git push heroku master


がうまくいきました。
しかし、次のコマンドを打ったところでエラーがでてしました。

heroku run rails db:migrate

発生している問題・エラーメッセージ

stack level too deepのエラーが出ています。
herokuデプロイが初めてで、今回のエラー文にうまく対処できずにいます。

/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/exe/bundle:22:in `<top (required)>'
/app/bin/bundle:3:in `load'
/app/bin/bundle:3:in `<main>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
Traceback (most recent call last):
    8387: from /app/bin/bundle:3:in `<main>'
    8386: from /app/bin/bundle:3:in `load'
    8385: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/exe/bundle:22:in `<top (required)>'
    8384: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
    8383: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/friendly_errors.rb:123:in `rescue in with_friendly_errors'
    8382: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/friendly_errors.rb:45:in `log_error'
    8381: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/friendly_errors.rb:95:in `request_issue_report_for'
    8380: from /app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/env.rb:18:in `report'
     ... 8375 levels...
       4: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
       3: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
       2: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
       1: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)

該当のソースコード

Gemのバージョンが問題になるという記事がいくつかあったので、Gemfileを以下に置いておきます。

Gemfile

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.6'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.13', '< 0.5', group: :development
gem 'pg', group: :production
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc



# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'
end



group :development do
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

  gem 'pry-rails'
  gem 'compass-rails','~> 2.0'
  gem 'sprockets', '2.11.0'
  gem 'devise'
  gem 'omniauth'
  gem 'omniauth-facebook'
  gem 'omniauth-twitter'
  gem 'bootstrap-sass'
  gem 'dotenv-rails'
  gem 'paperclip'
  gem 'omniauth-instagram'
  gem 'instagram'
  gem 'friendly_id'
  gem 'font-awesome-rails'
  gem 'zeroclipboard-rails'
  gem 'rails-i18n'
  gem 'google-analytics-rails'
  gem 'carrierwave'
  gem 'acts_as_paranoid', '~> 0.6.0'
  gem 'rails_12factor', group: :production

試したこと

Heroku の assets:precompile で エラーが起きたときの調査方法
https://mittsu-blog.com/how-to-cheack-heroku-assets-precompile-error

こちらの記事にあるように、Railsのバージョンが問題になるのでしょうか。

7年前の記事ですが、rails-saasのバージョンが問題だった質問
Getting “stack level too deep” error when deploying with Capistrano, Rails 3.1 ruby 1.9.2

英語で検索しいろいろ見てみましたが、対処法が見つからず。。。

補足情報(FW/ツールのバージョンなど)

エラー文から手がかりが掴めずに困っています。

追記

schema.rb

# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20190321185800) do

  create_table "images", force: :cascade do |t|
    t.string   "image",      limit: 255
    t.integer  "user_id",    limit: 4
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
  end

  create_table "items", force: :cascade do |t|
    t.integer  "user_id",    limit: 4
    t.text     "text",       limit: 65535
    t.datetime "created_at",                               null: false
    t.datetime "updated_at",                               null: false
    t.boolean  "check",                    default: false
    t.datetime "deleted_at"
  end

  add_index "items", ["deleted_at"], name: "index_items_on_deleted_at", using: :btree

  create_table "users", force: :cascade do |t|
    t.string   "email",                  limit: 255, default: "", null: false
    t.string   "encrypted_password",     limit: 255, default: "", null: false
    t.string   "reset_password_token",   limit: 255
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at",                                      null: false
    t.datetime "updated_at",                                      null: false
    t.string   "uid",                    limit: 255
    t.string   "provider",               limit: 255
    t.string   "avatar_file_name",       limit: 255
    t.string   "avatar_content_type",    limit: 255
    t.integer  "avatar_file_size",       limit: 8
    t.datetime "avatar_updated_at"
    t.string   "nickname",               limit: 255
    t.string   "description",            limit: 255
    t.string   "twitter",                limit: 255
    t.string   "instagram",              limit: 255
    t.string   "friendly_url",           limit: 255
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
  add_index "users", ["friendly_url"], name: "index_users_on_friendly_url", unique: true, using: :btree
  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree

end

こちらの記事にあるように、rails 4.2.6から rails 4.2.8にupdateしてみましたがエラーは解決しませんでした。。。

Ruby 2.4 and Rails 4 stack level too deep (SystemStackError)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kazto

    2019/03/23 11:07

    migrationに失敗しているため、/db/migrate/以下のファイルに問題があると見込まれます。内容を追記お願いします。

    キャンセル

  • Romay

    2019/03/24 04:32 編集

    コメントありがとうございます。
    /db/migrate/以下のファイルは、10個ほどのmigrationファイルと、schema.rb、seeds.rbが存在しています。migrationファイルは問題ないと思うので、schema.rbを追記しておきます。

    キャンセル

回答 1

0

rails 4.2.8ではruby 2.5は対応していないと思います。
Gemfile で2.4系を指定してデプロイをお試しください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/24 12:33

    コメントありがとうございます。
    現在のバージョンは、
    Ruby 2.3.1
    Rails 4.2.8
    です。
    Ruby 2.4系にアップグレードした方がいいということでしょうか。
    また、このようなバージョンのサポート関係を確認するサイト等ありますでしょうか。

    キャンセル

  • 2019/03/24 12:58

    そちらは開発環境でのrubyのバージョンになると思います。

    Heroku側で使われているrubyのバージョンを確認してみてください。

    $ heroku run ruby -v

    おそらく2.5系が使われていることと思いますので2.4系を指定する記述をGemfileに記述し、デプロイしてください。
    例: ruby '2.4.5' など

    Herokuでは2.4.5をサポートしているようですから、ローカル開発環境もアップグレードをしておくと良いと思います。

    https://devcenter.heroku.com/articles/ruby-support

    もし2.5系以上をお使いになるというのでしたらrails5をご利用ください。

    キャンセル

  • 2019/03/31 07:23

    おっしゃる通り、$ heroku run ruby -vで2.5.0が使われていたので、ruby '2.4.5'に変更し、ローカル環境もrbenvを使ってruby'2.4.5'にupdateしました。
    git push heroku masterをし、heroku run rails db:migrateをしたのですが、stack level too deepのエラーがまた出てしまいました。
    $ heroku run ruby -vの結果は、ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]となっているのですが、エラー文には、/app/vendor/bundle/ruby/2.4.0/gems/activesupport-4.2.6/lib/active_support/~~~~~~~~~~~~~~~~~~~~
    という文が続いています。
    なぜ2.4.0になっているのかよくわからないのですが、何かここからわかる手がかりはありますでしょうか。

    キャンセル

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

  • ただいまの回答率 87.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る