LoginSignup
0
2

More than 3 years have passed since last update.

AWS Cloud9でRuby on Railsを動かしてみた(MySQL編)

Last updated at Posted at 2020-04-27

こんにちは!モリタケンタロウです!
今回はAWSのCloud9で、Ruby on RailsのDBをMySQLで動かす方法について紹介します。
Railsでアプリを作るとき、デフォルトではSQLiteが採用されているようですが、今回はよりメジャーなMySQLを使ってみようと思います。

デフォルトのSQLiteを使う場合は、↓の記事を参考にしてみてください。

作成済みのアプリのDBをデフォルトのSQLiteからMySQLに変える場合は、↓の記事を参考にしてみてください。

とにかくやってみよう!

AWS Cloud9では最初からRubyもRailsもインストールされています。
ruby -vrails -vのコマンドで確認できます。

$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
$ rails -v
Rails 5.0.0

確認できたら早速アプリを作成してみましょう。
rails new [アプリ名]コマンドで作ります。

$ rails new my_app -d mysql
      create  
      create  README.md
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile

# 省略

Fetching mysql2 0.4.10
Installing mysql2 0.4.10 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

# 省略

An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

bundle installしてる時になんだかよく分からないエラーが出てきたみたいです…
「Make sure that ~」で言われた通り、mysql2のgemをインストールしてみます。

$ gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/'
Building native extensions. This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

# 省略

-----
mysql.h is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
-----

# 省略

またエラー…
今度はyum install mysql-develしてみろって書いてあるのでやってみます。
※ sudo付けないと「You need to be root to perform this command.」って怒られた…

$ sudo yum install mysql-devel
Loaded plugins: priorities, update-motd, upgrade-helper

# 省略

Installed:
  mysql-devel.noarch 0:5.5-1.6.amzn1                                                                                                                                                                      

Dependency Installed:
  mysql55-devel.x86_64 0:5.5.62-1.23.amzn1                                                                                                                                                                

Complete!

満を持してmysqlのgemのインストールに再挑戦します。

$ gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/'
Building native extensions. This could take a while...
Successfully installed mysql2-0.4.10
Parsing documentation for mysql2-0.4.10
Installing ri documentation for mysql2-0.4.10
Done installing documentation for mysql2 after 0 seconds
1 gem installed

できたっぽい!問題のbundle installをやってみます。
※ 作ったアプリのディレクトリの中に入るの忘れがち

$ cd my_app/
$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............

# 省略

Bundle complete! 15 Gemfile dependencies, 62 gems now installed.

# 省略

できるやん!
ということでアプリを起動して…ってのはもう少し我慢で、その前にMySQLのサービスを起動しないといけないみたいです。
じゃないと、「Mysql2::Error Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)」って怒られて一瞬ショックな気持ちになります。
ということで、sudo service mysqld startコマンドでMySQLのサービスを起動します。
※ これもsudo付けないと「Permission denied」って怒られた…

$ sudo service mysqld start                                         
Initializing MySQL database:  Installing MySQL system tables...

# 省略

Please report any problems at http://bugs.mysql.com/

                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

サービスを起動したら、今度はDBを作ります。
DB作らないでアプリを起動しても「ActiveRecord::NoDatabaseError Unknown database 'my_app_development'」って怒られるだけです。
rails db:createコマンドでconfig/database.ymlに書いてある内容でDBが作られます。

$ rails db:create
Created database 'my_app_development'
Created database 'my_app_test'

そしていよいよアプリを起動します。

$ rails server
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:8080
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.4 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:8080
Use Ctrl-C to stop

yayrailsmysql.png
できたー!待ち望んでいたエヴァの最終回っぽいイラスト!
いっぱい怒られたけどなんとか動かせました(^^)
アプリ開発は環境構築から地道ですね~…
それでは~

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2