Posted at

仮想環境でrailsを学ぶ(rails起動回)

More than 3 years have passed since last update.


Railsでアプリを作る

前回(仮想環境整える回)にてubuntuの環境は整えました

なので、本格的にrailsのアプリ(をworkspaceに作るまで)をやります

もう色んな人が書いている事ですが、備忘録として書かせていただきます


アプリの作成

何はともあれ作ります

前回特に記述しませんでしたがDB操作にはMySQLを使うので-dオプションを用いて

$ rails new test_app -d mysql

こんな感じで(app名はtest_appとして作成しました)


アプリを起動(仮)

ではrail -sしましょうか(bundlerを使っています)

cd test_app

bundle exec rails s -b 0.0.0.0 -p 3000

これだけでは何も問題がなさそうに見えますが、実際に3000番ポートにアクセスすると

Mysql2::Error (Access denied for user 'root'@'localhost' (using password: NO)):

とErrorが...要はtest_appってのを作ったのにuserがrootのままになってしまっている訳です

そこでmysqlで少し操作します。

mysql -uroot -p(MySQLインストール時に設定したpass)

mysql> create user test_app identified by (適当なpass);
mysql> GRANT ALL on *.* TO 'test_app'@'localhost' identified by 'password';

一番目の操作はMySQLにroot権限でログイン

二番目の操作はuserを定義。user名はアプリ名にしているがなんでも良い

三番目の操作は全権限をuserに付与するもの。'(ユーザ名)'@'localhost'です

これで

mysql> show grants for tutorial;

とした時にGRANT ALLの命令が格納されていればOKです

続いてアプリの中のDBの設定を変えます。デフォルトのままならば

cd test_app/config

emacs database.yml

としてdatabase.ymlの設定を変えます(emacsであることに特に意味はないです。vimでも何でも)

中身は(僕の場合ですが)

default: &default

adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock

と記述されている部分があります。これを

default: &default

adapter: mysql2
encoding: utf8
pool: 5
username: test_app
password: password
socket: /var/run/mysqld/mysqld.sock

とするわけです。デフォルトではrootがuserになっているのでそれを変えればOKという単純な話です

なので後はDB接続をしましょう

bundle exec rake db:create

bundle exec rake db:migrate

これで特に問題が無ければ成功となります