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

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

新規登録して質問してみよう
ただいま回答率
87.20%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

受付中

【docker環境構築】についてのエラー

tomomomo
tomomomo

総合スコア22

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0回答

0評価

0クリップ

463閲覧

投稿2021/11/11 00:37

現状と問題

cloud9を用いて開発を行なっていたのですが、dockerで環境構築してvscodeで開発をできるようにしたいと思い、こちらの動画を参考に環境構築しました。
localhost:3000にアクセスをし、Your on Rails!の画面を表示させるところまではうまくいきました。
しかし、下記コマンドを行なってファイルが作られたのはいいのですが、modelなど中身のない空のファイルになります。

terminal

$ docker-compose run web rails new . --force --database=mysql --skip-bundle

そこで、今までcloud9で開発していたmodel,controller,view,routingなどのファイルをコピーしてdockerで環境構築したvscodeに持ってこようと考えました。
そして一通りファイルを移し終えて(dbに関してはマイグレーションファイルなどは移し替えませんでした。新たにrails g modelが必要??)
gemファイルをいじったので

terminal

$ docker-compose build $ docker-compose run web bundle install //そしていよいよサーバーを立ち上げようと下記コマンド実行 $ docker-compose up //ここでエラーが発生!!

エラーの内容は。。。

terminal

undefined method `devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)

ここでやっと気づいたのですが、deviseのgemやMVCに記述はしていますが、rails g devise installをしていませんでした。
しかしコマンドを打つと

terminal

Could not find mysql2-0.5.3 in any of the sources Run `bundle install` to install missing gems.

そこから色々コマンドを打つうちにmysql2が入っていないのではないかと思い、バージョンを確認したところ見つかりませんでした。
gemファイルやgemfilelockには記載されていましたが、なぜか見つからないと言われました。
rails newするときにサーバーでmysqlを指定しているのになぜかは分かりませんでしたが、しょうがないのでmysql2をインストールしようとしたところ、brew install mysqlをしろとターミナルに言われ、言う通りにするとmysql '8.0.27'がインストールされました。
ここら辺からエラーに続いて違う方向に行きすぎてパンクしてしまいました。。。
もしかしてと思い、rails g devise installをもう一度すると

terminal

can't find gem railties (>= 0.a) with executable rails (Gem::GemNotFoundException)

というエラーが出ました。

docker環境構築時の該当ファイル

dockercomposeyml

version: "3" services: db: image: mysql:5.7 environment: MYSQL_USER: tomom MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - ./db/mysql/volumes:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp - gem_data:/usr/local/bundle ports: - 3000:3000 depends_on: - db tty: true stdin_open: true volumes: gem_data:

detabaseyml

# MySQL. Versions 5.1.10 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db development: <<: *default database: myapp_development # 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: myapp_test # As with config/secrets.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production: <<: *default database: myapp_production username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

細かく切り出してエラーを解決していきたいのですが、お力添えいただけると大変ありがたいです。
必要なファイルや情報等言っていただければお答えしますので、どうかよろしくお願いいたします。

参考記事
こちら
こちら

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです