🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

2回答

2140閲覧

Railsチュートリアル2章 rails db:migrateのエラー

ROID0609

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

1クリップ

投稿2019/09/16 12:31

編集2019/09/17 14:35

Railsチュートリアル マイグレートでのエラー

初めて質問させていただきます。
最近rubyの勉強を始め、railsのチュートリアルに挑戦しています。
rubyのバージョンは2.6.4p104、
railsのバージョンは5.1.6を使用しています。

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

2章のリスト2.4でのマイグレートを実行した際に、
下のようなメッセージが出て完了できません。

rails aborted! ArgumentError: wrong number of arguments (given 2, expected 0) bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)

ここまでの工程は基本チュートリアルの記載のまま進め、
Gemfileの

group :production do gem 'pg', '0.20.0' end

この部分のみ、rubyのバージョンが合わなかったので、

group :production do gem 'pg', '1.1.4' end

に変更しています。

rails db:migrate:resetを試してみましたが、

rails aborted! ArgumentError: wrong number of arguments (given 2, expected 0) bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments (See full trace by running task with --trace)

上記のメッセージが出て上手く行きませんでした。

色々調べましたが、引数の数が合っていないことしか分からず、
根本的な解決方法がわかりませんでした。

原因がお分かりでしたら、ご教示いただけますと幸いです。
よろしくお願いいたします。

2019/09/17追記
マイグレーションファイルの中身は以下の通りです。

class CreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.string :name t.string :email t.timestamps end end end

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

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

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

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

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

winterboum

2019/09/16 14:05

db:migrate も db:migrate:reset もその右側には何も打たずに[Enter]ですね?
ROID0609

2019/09/16 21:49

言葉足らずで申し訳ございません。 おっしゃる通り、どちらも右側にそれ以上何も打ち込まずに[Enter]を押しています。
winterboum

2019/09/16 23:18

う〜〜む。 ですと私の知識を越えてますので、申し訳ない。
no1knows

2019/09/17 10:09

マイグレーションファイルを提示いただけると回答がつきやすくなるかと思います。
ROID0609

2019/09/17 14:33

かしこまりました。 ご助言ありがとうございます。 ファイルの中を追記いたします。 よろしくおねがいします。
guest

回答2

0

こんにちは。解決済みとか、作り直しているならご容赦ください。

1.環境について

まず、お手元の開発環境はWindowsでしょうか?それとも、MacOSやCloud9のようなUnix系の環境でしょうか。

こちらによって、環境変数の設定方法が若干異なりますので、ご注意ください。
たとえばMacOSの場合、no1knowsさんがご提示してくださっている、set ではなくて export を使ったりします。

2. RAILS_ENVについて

チュートリアルでは、ローカルで開発しつつ実行する場合は、RAILS_ENV=development を前提にしています。
あえて明示していない場合も、developmentモードになります。

db:drop やdb:resetというデータベースをいったん削除する動きを支持した場合、productionモードの場合はデータ破壊を防ぐため、db:check_protected_environments でのチェックをします。

逆に、developmentモードではここはチェックしないと思います。

エラーメッセージにこの文言が出ているということは、RAILS_ENV=productionに設定しているということでしょうか?

このあたりでも変わってきますので、念のため確認してみてください。

3. config/database.yml について

こちらは、rails new をしたあと特にいじっていないでしょうか?

チュートリアルでお手元でコーディングする場合は、特に明示しない限りdevelopmentモードで、SQLite3というデータベースを使って動きます。

リスト 2.4にしたがって、rake db migrate を実行すると本来は db/development.sqlite3 というファイルが出来上がって、そこにデータが格納されるようになります。

pg(PostgreSQL用の設定)は、Herokuにデプロイする場合に効きますので、Gemfileを gem 'pg', '1.1.4' に変更したというところは、特に直接のエラー原因では無い気がします。

4. Migrationのファイルについて

rails generate scaffold User name:string email:string を実行したあとは、 db/migrate/YYYYMMDDHHmmss_create_users.rb といったファイルができるはずです。

それ以外になにか重複したり、別なファイルができていたりしていませんでしょうか?

以上、回答というよりは質問に近くなってしまっていますが、環境面含めて今一度ご確認いただけますでしょうか。
再作成してもまた同じになってしまう可能性もありますが、もし解決すればすぐ次に進めると思いますので。

投稿2019/09/26 01:15

編集2019/09/26 01:23
suama

総合スコア1997

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

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

ROID0609

2019/09/26 10:39

私からの情報が不足していて申し訳ありません。 OSはwindowsを使用しております。 一度作り直してみましたが、同じエラーとなりました。 RAILS_ENVをrails consoleから確認しましたが、developmentでした。 config/database.ymlには一切触っておらず、Migrationファイルについても、 重複や違うファイルが生成されているといったこともありませんでした。
suama

2019/09/27 23:16 編集

ご返信や環境の情報をありがとうございます。 作り直しでも、エラーが発生なのですね。 (1) --traceをつけて実行 メッセージにある、--trace オプションを指定して実施ではいかがでしょうか? なにか原因がつかめそうなメッセージがでるかもしれません。 ``` $ RAILS_ENV=development rails db:reset --trace ** Invoke db:reset (first_time) ** Invoke db:drop (first_time) ** Invoke db:load_config (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:load_config ** Invoke db:check_protected_environments (first_time) ** Invoke db:load_config ** Execute db:check_protected_environments ** Execute db:drop ** Invoke db:drop:_unsafe (first_time) ** Invoke db:load_config ** Execute db:drop:_unsafe Dropped database 'db/development.sqlite3' Dropped database 'db/test.sqlite3' ** Invoke db:setup (first_time) ** Invoke db:schema:load_if_ruby (first_time) ** Invoke db:create (first_time) ** Invoke db:load_config ** Execute db:create Created database 'db/development.sqlite3' Created database 'db/test.sqlite3' ** Invoke environment ** Execute db:schema:load_if_ruby ** Invoke db:schema:load (first_time) ** Invoke db:load_config ** Invoke db:check_protected_environments ** Execute db:schema:load -- create_table("users", {:force=>:cascade}) -> 0.0416s -- create_table("users", {:force=>:cascade}) -> 0.0036s ** Invoke db:structure:load_if_sql (first_time) ** Invoke db:create ** Invoke environment ** Execute db:structure:load_if_sql ** Invoke db:seed (first_time) ** Execute db:seed ** Invoke db:abort_if_pending_migrations (first_time) ** Invoke db:load_config ** Execute db:abort_if_pending_migrations ** Execute db:setup ** Execute db:reset ``` こんな感じにはなります。
guest

0

一度、下記コマンドを試してから、rails db:migrateでいかがでしょうか?

set

1set DISABLE_DATABASE_ENVIRONMENT_CHECK=1 2bundle exec rake db:drop``` 3 4 5[https://qiita.com/Esfahan/items/75ade0233fe02ab04381](https://qiita.com/Esfahan/items/75ade0233fe02ab04381)

投稿2019/09/18 00:18

編集2019/09/19 02:54
no1knows

総合スコア3365

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

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

ROID0609

2019/09/18 14:14 編集

単純にコピペで実行できなかったので set RAILS_ENV=production set DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop この順番で実行してみたところ、最初2つは実行後特にメッセージはありませんでしたが、 最後を実行したところ、 rake aborted! ArgumentError: wrong number of arguments (given 2, expected 0) Tasks: TOP => db:drop => db:check_protected_environments (See full trace by running task with --trace) 上記のメッセージがでて成功しませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問