Ruby 初心者がActiveRecordを使ってデータをデータベースに挿入するまで（単体でActiveRecordを使う）

前から欲しかった英語の単語帳作成アプリケーションを作るため、英単語を管理するデータベースをActiveRecordを使っていじってみる。

まずは先輩に教えてもらったデータベースをGUIで確認できるツールをインストール。

[Sequel Pro](http://www.sequelpro.com/)

今回はこの2つのサイトを参考に作った。

[Active Record の基礎](http://railsguides.jp/active_record_basics.html#%E5%91%BD%E5%90%8D%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%81%99%E3%82%8B)
[ActiveRecordを単体で使うには](https://tsuchikazu.net/active_record_single_use/)

最初の設定というか、入りは [ActiveRecordを単体で使うには](https://tsuchikazu.net/active_record_single_use/) がわかりやすいのでこれを参考にこの2つをインストールする。

```$ gem install activerecord```
```$ gem install mysql2```

インストールしたらこんな感じで書いてみる。

```database.rb
require 'active_record'

class EnglishWord < ActiveRecord::Base
end

ActiveRecord::Base.establish_connection(
        :adapter  => 'mysql2',
        :database => 'englishlearning',
        :host     => 'localhost',
        :username => 'root',
        :password => ''
)
```

そういえばここの部分。

![Screen Shot 2016-04-24 at 21.19.40.png](https://qiita-image-store.s3.amazonaws.com/0/34733/7524e276-0d86-ce34-0d81-fe9266b3c0d3.png)
[Active Record の基礎](http://railsguides.jp/active_record_basics.html#%E5%91%BD%E5%90%8D%E3%83%AB%E3%83%BC%E3%83%AB%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%81%99%E3%82%8B)

DSLについての知識が全く無い時はこの表の意味が全くわからなかったけど、最近は意味がわかってきた。

```database.rb
class EnglishWord < ActiveRecord::Base
end
```

ActiveRecord::Base を継承??した EnglishWord ってクラス作ってデータベーステーブルの名前を表の通り english_words にみたいにルール通りつなげると ActiveRecord が使えるよーみたいな意味。※たぶん。

で次に、mysql でデータベースとテーブルを作る。これはコマンドラインで普通に mysql をいじってやるんだけど、これも他に方法はあるんですかね？？

```
$ mysql.server start                                                                                 
Starting MySQL
 SUCCESS! 

$ mysql -uroot 
                                                                                              
mysql> create database englishlearning;
Query OK, 1 row affected (0.01 sec)

mysql> use englishlearning;
Database changed
```

次にここの部分を参考にSQLファイルを作る。
[3 Active Recordのモデルを作成する](http://railsguides.jp/active_record_basics.html#active-record%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)

```database_stracture.sql
create table english_words (
  id int(11) NOT NULL auto_increment,
  word varchar(255),
  PRIMARY KEY  (id)
)
```

SQLファイルを読み込む。

```
mysql> source database_stracture.sql;
```
これで出来たはずー！
こんな感じで Sequel Pro で接続してみる。
![Screen Shot 2016-04-24 at 21.33.04.png](https://qiita-image-store.s3.amazonaws.com/0/34733/3d1cf765-30b9-0f8c-6978-6f3aea5db24a.png)

接続できましたー。
次は読み込む英単語リストの準備。

```words.txt
contradiction
imminent
assurance
adhere
exploitation
invoke
prompt
revoke
entity
assault
aspirations
divorce
composition
reiterated
rebuke
denounced
referendum
coincided
turbulent
amplitude
Prague
reconciliation
propositions
turbulent
speculation
oriented
fueled
problematic
stakes
expedient
delegates
toxic
tipped
abolition
explicitly
depreciation
liability
contagion
stake
magnified
thereby
exacerbating
lethargy
preoccupation
slack
reinvigorating
envisioned
whopping
norms
procurement
dysfunctional
mitigating
dire
inferences
overhang
glut
validity
deteriorate
stunted
sluggish
plausible
awash
obsolete
plagued
ascribes
exogenous
culprit
emanating
fluctuate
aspire
caveats
sour
notoriously
sunnier
predecessors
crucial
threshold
awarness
advocate
amend
affirmative
faculty
grant
irregation
prescription
deteriorate
abridged
courtesy
convergence
grim
stuck
disposal
belligerent
attribute
```

これを使います。
このファイルを開いて英単語をデータベースに入れます。
こんな感じ。

```get_words.rb
require './database.rb'

class CreatingList

  def initialize
  end

  def to_record
    words_file = File.open('words.txt').read
    words_file.each_line do |word|
      word = word.chomp
      p word
      EnglishWord.create(
       word: word
      )
    end
  end
end

creatinglist = CreatingList.new
creatinglist.to_record
```
さっきの database.rb を読み込んでくる。 次に words.txt を開いて改行を取ってから挿入。
できましたー。
![Screen Shot 2016-04-24 at 21.38.07.png](https://qiita-image-store.s3.amazonaws.com/0/34733/6699d003-6b24-abdc-0486-3d7149954ed0.png)