#47 【Ruby】Rubyを用いたデータベース連携の勉強会に参加してみて
Rubyを用いたデータベース連携の勉強会に参加してみて
Railsを勉強していてデータベースの連携がいまいち理解できませんでした。
そんな時に、Rubyを用いたデータベース連携という勉強会が開かれることを知り、しのごの言わず参加してきました。٩( 'ω' )و
当日は14時〜17時までの計3時間。
人数は合計8人。少ない!
今回は費用として2500円かかっています。その分気合が違いますよね。。
詳しくは書きませんがどのような感じだったのか備忘録っぽく書きます。
▼大まかな流れ
1. codeanywhereを導入し、準備する
今回はcodeanywhereを用いてターミナル操作やRubyとのデータベース連携を行いました。
はじめてのクラウド上の環境設定で戸惑いながらもなんとか設定完了。
(他の方、絶対経験者でした。早いですもん・・)
ちなみにcodeanywhereはこちら。
2. CLIとSQL文を書いてみる
要するにターミナル上でファイル操作や場所移動などを行うコマンドのこと。
$ ここにCLIを記述
例として、
「.tabel」という記述をすると ($ .table)
データベースに登録されているテーブルを表示されるよ。
authorテーブルとbooksテーブルがあれば、
author
books
みたいな感じで表示してくれる命令。
ちなみに、最初はテーブル表示してもずれて見にくいので下記の記述を。
.header on
.mode colum
SQL文については他の方の記述を見てね。
今回はActiveRecordがメインだったため基本的なSQL文はちょこっとだけでした。
ちなみにこの時、はじめてActiveRecordを知りました。。
3. Rubyの導入後、いよいよデータベースを操作してみる
Rubyの最新版?(2.4.0)をインストールした後、
データベースをRubyから操作してみます。
Rubyからデータベースを操作するgemこそ
今回の一番重要な箇所の気がしました。
(知らなかったので・・)
これがあるから長ったらしいSQL文を書かなくていいみたいですね。
いやー便利ですね。覚えるの大変ですけど。。
gem install activerecord
gem install sqlite3
ちなみにgemとはツールのことみたいです。
4. バリデーションなんかも使ってみる
validates : name , presence : true
この記述をデータベース参照のクラス内に記述するだけで
データベースに値を保存しようとするときに値がなければエラーがおきます。
▼book_shelf.rb
class Author < ActiveRecord::Base
validates : name , presence : true
end
▼CUI
load "./book_shelf.rb"
author = Author.new
author.gender = "male"
author.save
このように保存しようとすると上で指定したnameカラムに値が追加されていないためエラーに。
ちなみに上のCUI上の流れが一連のデータベースに値を追加するときの流れです。
他にもアソシエーションも学びました。が、長くなるため割愛。
5. まとめ
今回はお金を払っている文きちんと学べた気がします。
そして、ペースが早いのなんの・・・。
私はついていくのが精一杯。(´-`)
眉をひそめる人なんていなかったです。私以外・・・。
だけどペースが早い分、色々なことを学べました。
濃密な時間だったと思います。٩( 'ω' )و
いや、当たりでしたね。
ただ、復習しないと忘れそうで怖いです。
(だから記事に残しているんですけどね)
あと、勉強会によって雰囲気や内容がかなり違うなと感じました。
以前の勉強会の記事と比べてみてください。。
これでRubyおよびにRuby on Railsのデータベースの概念が少し分かりましたので
この調子で頑張ろうと思います。٩( 'ω' )و
6. メモ置き場
個人のメモ置き場のため文句はなしで・・・。指摘は大歓迎。
# terminal)) $ sudo -y yum install sqlite
=begin
##sudo => superuser という意味。
何でもできるsudo をつけないと失敗する場合がある
##sqliteはテキストファイルに書き込むもの##MySQLやpostgerSQLはアプリに保存される
###本番環境ではsqliteはおすすめしない###
###コマンドはCLIとSQLの2つある###
ターミナル上からデータベースを操作するときはCLIを立ち上げるコマンドラインインターフェース
CLIに対してのコマンドCLIコマンド
CLIは頭に.ドットをつける
実際にデータベースを操作するコマンドをSQLという
ユニークな情報=primary key(自動採番)
CLIコマンド.header on
.mode colum
これでselect * from テーブル名を見やすくする
カラム追加alter table追加するテーブル名 add column 追加するカラム名 追加するカラムの属性例:alter table books add column author_id integer
すでにあるカラムに追加する方法update文
例:update books set author_id = 1 where id = 1;
macのターミナルでいじる場合も基本同じ。
ただ、centOSの場合は yum だっただけ。macOSの場合はbrew??
##rvmは複数のrubyを扱うものrvm install バージョン数例:rvm install 2.4.0
ActiveRecordrubyを介してデータベースをいじるもの長いSQL文をいじらなくて済む
class 可読性が悪くなる 再利用性の低下 を防ぐものend
###gemとはツールのこと###
ruby からデータベースを操作するgem
gem install activerecord
#Rubyがsqlite3を扱うためのgemをインストールするgem install sqlite3
irbコマンド
rubyを実行できる環境を立ち上げる
保存していたbook_shelf.rbファイルをirb上で使えるようにするload '呼び出すファイル名(ディレクトリ込み)'
ログを出すためのコードActiveRecord::Base.logger = Logger.new(STDOUT)
バリデーション妥当性を判断する
idはデータベースを保存した時に自動採番してくれる
▼基本的な流れ
①変更したら必ずload②book = Book.new
③book.title = ""book.author_id = 1
④book.save
アソシエーションの使い方
has_many :books
belong_to :author
これで各データベース間の検索のしあいがスムーズになる
=end
勉強会のペースが早くてメモとる暇がなくぬけぬけになってしまった・・。
反省ですな。_(┐「ε:)_
終わりじゃ