AWS Cloud9에서 Ruby on Rails를 움직여 보았습니다 (MySQL 편)
이번에는 AWS의 Cloud9에서 Ruby on Rails의 DB를 MySQL로 이동하는 방법을 소개합니다.
Rails에서 앱을 만들 때 기본적으로 SQLite가 채용되고 있는 것 같습니다만, 이번은 보다 메이저인 MySQL을 사용해 보려고 합니다.
기본 SQLite를 사용하는 경우 ↓ 기사를 참조하십시오.
미리 작성된 앱의 DB를 기본 SQLite에서 MySQL로 변경하려면 ↓ 기사를 참고해 보세요.
어쨌든 해보자!
AWS Cloud9는 처음부터 Ruby와 Rails를 모두 설치합니다.ruby -v
및 rails -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.
# 省略
할 수 있어!
그렇다고 해서 앱을 기동해…
그렇지 않으면, 「Mysql2::Error
그렇다면 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
할 수 있었어! 기다리고 있던 에바의 마지막 돌 같은 일러스트!
가득 화났지만 어떻게든 움직일 수 있었습니다(^^)
앱 개발은 환경 구축에서 꾸준히군요~…
그럼~
Reference
이 문제에 관하여(AWS Cloud9에서 Ruby on Rails를 움직여 보았습니다 (MySQL 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/MORITAKENTARO/items/ab6f1b9a7c356409f1da
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
$ rails -v
Rails 5.0.0
$ 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`
$ 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.
-----
# 省略
$ 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!
$ 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
$ 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.
# 省略
$ sudo service mysqld start
Initializing MySQL database: Installing MySQL system tables...
# 省略
Please report any problems at http://bugs.mysql.com/
[ OK ]
Starting mysqld: [ OK ]
$ 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
Reference
이 문제에 관하여(AWS Cloud9에서 Ruby on Rails를 움직여 보았습니다 (MySQL 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MORITAKENTARO/items/ab6f1b9a7c356409f1da텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)