【Ruby on Rails】Cloud9からUbuntuへ環境移行。git cloneし、localhostで接続するまで


プログラミングスクールではCloud9で開発を行っていましたが、最近はWSL(Ubuntu)で作業しています。
Cloud9で作業していたポートフォリオをUbuntuの方で修正を行いたかったため、環境を移行しました。

予想される必要な作業

  • Rubyのバージョンを合わせる。
  • Cloud9ではmySQL,UbuntuではPostgreSQLを使用していたため、現在の環境にMySQLをインストールorプロジェクトのデータベースの設定をPostgreSQLに変更。

git clone~gemのインストール

まずはgitclone後プロジェクトのディレクトリに移動し、対応するRubyのバージョンをインストール。

$ rbenv install 2.4.1

Rbenvで管理されているバージョンを確認すると正しくインストールされている。

~$ rbenv versions
  2.4.1
  2.4.2
* 2.5.1 (set by /home/tkr_ld/.rbenv/version)

ローカルのRubyのバージョンを設定。

$ rbenv local 2.4.1

確認。

$ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

次にMySQLをインストール。

sudo apt install mysql-server mysql-client

gemをインストール。

$ gem install bundler
$ bundle install

下記のエラーが。

An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue.

エラー文を読むとlibmysqld-devのライブラリが必要なようだったのでインストール。

$ sudo apt-get install libmysqld-dev

再度bundle installすると成功。

Ruby Sass is deprecated and will be unmaintained as of 26 March 2019.

* If you use Sass as a command-line tool, we recommend using Dart Sass, the new
  primary implementation: https://sass-lang.com/install

* If you use Sass as a plug-in for a Ruby web framework, we recommend using the
  sassc gem: https://github.com/sass/sassc-ruby#readme

* For more details, please refer to the Sass blog:
  http://sass.logdown.com/posts/7081811

MySQLの接続設定

データベースを作成してみる。

$ bin/rails db:create
#<Mysql2::Error: Access denied for user 'root'@'localhost'>

どうやらrootで接続できていないようです。調べてみるとMySQLではdatabase.ymlにデータベースの接続ユーザーを設定する必要があるとのこと。
そこでデータベースのユーザーを作成。

$ sudo mysql
mysql> CREATE USER 'railsuser'@'localhost' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'railsuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

database.ymlに設定。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: railsuser #設定したユーザー
  password: mypassword #設定したパスワード
  host: localhost

データベースを作成。

$ bin/rails db:create
Created database 'tasklist_development'
Created database 'tasklist_test

データベースが作成されたことが確認できたので、マイグレーションを実行。

$ bin/rails db:migrate

サーバーを起動。

$ bin/rails s

最後に

起動できました。もし捕捉や修正などありましたら、コメントを頂けると幸いです。

参考にした記事

RailsをMySQL対応した方法
Railsアプリ開発に途中から参加する場合の環境設定