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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1609閲覧

test-unit-rails を Gemfile に記述すると rake db:migrate RAILS_ENV=test に失敗する

ltcmdr927

総合スコア13

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/12/03 23:40

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

Rails4 アプリケーションにおいて test-unit および test-unit-rails を使ったユニットテストを記述しようとしていますが、Gemfile において

ruby

1group :test do 2 gem 'test-unit-rails' 3end

のように test-unit-rails を記述すると、rake db:migrate RAILS_ENV=test を実行した際、 rake aborted となり失敗します。

bash

1$ rake db:migrate RAILS_ENV=test 2rake aborted! 3NameError: uninitialized constant ActiveSupport::Testing::ConstantLookup 4/path/to/rails-project-dir/config/environment.rb:5:in `<top (required)>' 5Tasks: TOP => db:migrate:reset => db:migrate => environment 6(See full trace by running task with --trace)

同様の現象は rake db:create RAILS_ENV=testrake db:migrate:reset RAILS_ENV=test など、 RAILS_ENV に test がセットされた場合のデータベースに関係する rake task において現出するようです。

その場合、 Gemfile から test-unit-rails をコメントアウトすれば問題なく実行できます。

また test-unit-rails が記述されていても rake test によるテストは問題なく実施できます。

bash

1$ bundle exec rake test 2Loaded suite /path/to/users-home/.rbenv/versions/2.2.3/bin/rake 3Started 4.. 5 6Finished in 0.032617 seconds. 7---------------------------------------------------------------------------------------------------------------------------------------- 82 tests, 4 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 9100% passed 10---------------------------------------------------------------------------------------------------------------------------------------- 1161.32 tests/s, 122.64 assertions/s

###実現したいこと

Gemfile に test-unit-rails が指定されている状態でも、rake db:migrate RAILS_ENV=test などの rake task が実行できるようにしたい。

###該当のソースコード

Gemfile (抜粋)

Ruby

1ruby '2.2.3' 2# ... 3gem 'rails', '4.2.4' 4gem 'mysql2', '~> 0.3.13' 5# ... 6group :test do 7 gem 'test-unit' 8 gem 'test-unit-rails', '~> 1.0.4' 9end

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

Mac OS X El Capitan (10.11.6)
Ruby 2.2.3p173
rails 4.2.4
test-unit 3.2.3
test-unit-rails 1.0.4

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。

bash

1$ vi Gemfile 2# mysql2 と test-unit-rails のバージョン指定を消す 3... 4gem 'mysql2' 5... 6group :test do 7 gem 'test-unit-rails' 8end 9... 10$ bundle update 11# 最新版の mysql2 と test-unit-rails がインストールされる 12... 13Installing mysql2 0.4.5 (was 0.3.21) with native extensions 14... 15Using test-unit-rails 5.0.2 (was 1.0.4) 16... 17$ vi Gemfile 18# mysql2 のバージョンだけを元に戻す(test-unit-railsはそのまま) 19... 20gem 'mysql2', '~> 0.3.13' 21... 22$ bundle install 23$ bundle exec rake test 24# rake test に成功 25Loaded suite /path/to/.rbenv/versions/2.2.3/bin/rake 26Started 27.. 28 29Finished in 0.032864 seconds. 30-------------------------------------------------------------------------------------------------------------------------------------------------------- 312 tests, 4 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 32100% passed 33-------------------------------------------------------------------------------------------------------------------------------------------------------- 3460.86 tests/s, 121.71 assertions/s 35$ bundle exec rake db:migrate:reset RAILS_ENV=test 36# rake db:migrate:reset RAILS_ENV=test も成功 37== 20160120015233 CreateHoge: migrating ======================================= 38-- create_table(:hoges) 39 -> 0.0103s 40-- add_index(:hoges, [:text1, :text2]) 41 -> 0.0080s 42== 20160120015233 CreateHoge: migrated (0.0184s) ============================= 43...

恐らくですが test-unit-rails のバージョン指定が古すぎたのと、
mysql2 がうまくインストールされていなかったのが原因のようでした。

投稿2016/12/04 20:55

ltcmdr927

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問