現状と問題
cloud9を用いて開発を行なっていたのですが、dockerで環境構築してvscodeで開発をできるようにしたいと思い、こちらの動画を参考に環境構築しました。
localhost:3000にアクセスをし、Your on Rails!の画面を表示させるところまではうまくいきました。
しかし、下記コマンドを行なってファイルが作られたのはいいのですが、modelなど中身のない空のファイルになります。
terminal
1$ docker-compose run web rails new . --force --database=mysql --skip-bundle
そこで、今までcloud9で開発していたmodel,controller,view,routingなどのファイルをコピーしてdockerで環境構築したvscodeに持ってこようと考えました。
そして一通りファイルを移し終えて(dbに関してはマイグレーションファイルなどは移し替えませんでした。新たにrails g modelが必要??)
gemファイルをいじったので
terminal
1$ docker-compose build 2$ docker-compose run web bundle install 3//そしていよいよサーバーを立ち上げようと下記コマンド実行 4$ docker-compose up //ここでエラーが発生!!
エラーの内容は。。。
terminal
1undefined method `devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)
ここでやっと気づいたのですが、deviseのgemやMVCに記述はしていますが、rails g devise installをしていませんでした。
しかしコマンドを打つと
terminal
1Could 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
1can't find gem railties (>= 0.a) with executable rails (Gem::GemNotFoundException)
というエラーが出ました。
docker環境構築時の該当ファイル
dockercomposeyml
1version: "3" 2 3services: 4 db: 5 image: mysql:5.7 6 environment: 7 MYSQL_USER: tomom 8 MYSQL_ROOT_PASSWORD: password 9 ports: 10 - "3306:3306" 11 volumes: 12 - ./db/mysql/volumes:/var/lib/mysql 13 14 web: 15 build: . 16 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 17 volumes: 18 - .:/myapp 19 - gem_data:/usr/local/bundle 20 ports: 21 - 3000:3000 22 depends_on: 23 - db 24 tty: true 25 stdin_open: true 26 27volumes: 28 gem_data: 29
detabaseyml
1# MySQL. Versions 5.1.10 and up are supported. 2# 3# Install the MySQL driver 4# gem install mysql2 5# 6# Ensure the MySQL gem is defined in your Gemfile 7# gem 'mysql2' 8# 9# And be sure to use new-style password hashing: 10# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html 11# 12default: &default 13 adapter: mysql2 14 encoding: utf8 15 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 16 username: root 17 password: password 18 host: db 19 20development: 21 <<: *default 22 database: myapp_development 23 24# Warning: The database defined as "test" will be erased and 25# re-generated from your development database when you run "rake". 26# Do not set this db to the same as development or production. 27test: 28 <<: *default 29 database: myapp_test 30 31# As with config/secrets.yml, you never want to store sensitive information, 32# like your database password, in your source code. If your source code is 33# ever seen by anyone, they now have access to your database. 34# 35# Instead, provide the password as a unix environment variable when you boot 36# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database 37# for a full rundown on how to provide these environment variables in a 38# production deployment. 39# 40# On Heroku and other platform providers, you may have a full connection URL 41# available as an environment variable. For example: 42# 43# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 44# 45# You can use this database configuration with: 46# 47# production: 48# url: <%= ENV['DATABASE_URL'] %> 49# 50production: 51 <<: *default 52 database: myapp_production 53 username: myapp 54 password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> 55
細かく切り出してエラーを解決していきたいのですが、お力添えいただけると大変ありがたいです。
必要なファイルや情報等言っていただければお答えしますので、どうかよろしくお願いいたします。
あなたの回答
tips
プレビュー