省エネエンジニア

ゆるっとエンジニアやってます。Android、Webのお仕事やってます。Iotのお仕事に関わりたい。

【Ruby on Rails】Cloud9でMySQLを使っちゃう

毎日更新の目標は早速達成できず。

お酒を飲んで帰るとPC見るのつらいんですよー。

 

さて、Cloud9でRailsテンプレートを作成すると最初はSQLiteを使うようになっていると思いますが、MySQLが使えるようなので、MySQLに変えちゃいます。

 

Gemfileを編集します。

 

 

# Use sqlite3 as the database for Active Record
#gem 'sqlite3'
gem 'mysql2', '~> 0.3.20'

 

最初は赤文字の行が記載されていると思いますので、ここを削除またはコメントアウトして、gem 'mysql2', '~> 0.3.20'を追加します。

※2015/12/6現在最新のgemを入れるとmodelが作成できないようです。。。ご注意です。

 

したらば、コンソールでプロジェクトのルートへ行き、

bundle install

 

と打ってみましょう。

 

bundle install はGemfile内で指定された依存性のインストールをしてくれます。

 

使いたいgemをGemfileに書くといい感じにインストールしてくれるってことですね。

バージョンを指定しなければ最新のが入ります。

 

 

databaseに接続する為には、config/database.ymlを編集する必要があります。

 

development:
    adapter: mysql2
    encoding: utf8
    database: c9
    username: <%=ENV['C9_USER']%>
    host: <%=ENV['IP']%>

 

今回はCloud9が用意してくれているDBを使います。

ローカルで動かしているなら、自分で作ったDB名とユーザー名いれて、hostにはlocalhostって入れれば接続できます。

win7だともしかしたらlocalhostでは繋がらない可能性もありますよね。

その場合は127.0.0.1でいけると思います。

 

 

したらば、とりあえずmysqlを起動しておきましょう。

 

mysql-ctl start

 

 

さて、DBも繋がったことですし、早速modelを作成しましょう。

 

コンソールで

 

rails generate model UserBase

 

を入力します。

 UserBaseは私がこれから使いたいテーブル名ですので、お好きな名前を入れてください。

 

すると、

db/migrate/20151205133900_create_user_bases.rb

app/model/にuser_base.rb

test/models/user_base_test.rb

test/fixtures/user_bases.yml

みたなファイルが追加されます。

 

次に、テーブルのカラムを決めます。

さっき作ったdb/migrate/20151205133900_create_user_bases.rbを編集します。

 

class CreateUserBases < ActiveRecord::Migration
    def change
        create_table :user_bases do |t|

            t.string :name, :null => true
            t.string :name_kana, :null => true
            t.string :mail, :null => true
            t.integer :authority, :null => true
            t.date :last_login, :null => true
            t.timestamps null: false

         end
    end
end

 

こんな感じで書きます。

 

んで、

 

rake db:migrate

 

ってするとテーブルとカラムが作成されます。

 

mysql> show tables from c9;
+-------------------+
| Tables_in_c9 |
+-------------------+
| schema_migrations |
| user_bases |
+-------------------+
2 rows in set (0.00 sec)

 

 

mysql> desc user_bases;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| name_kana | varchar(255) | YES | | NULL | |
| mail | varchar(255) | YES | | NULL | |
| authority | int(11) | YES | | NULL | |
| last_login | date | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+

 

次回は、実際にrailsからDBの書き込みと読み出しをします。