はじめに
Rails ではなく Ruby 単体のプログラムで DB に接続したい時があるかと思います。
例えばスクレイピングしてきた情報を DB に格納したい時など。
ActiveRecord を使うと実装できます。
ActiveRecord は Rails に搭載されているので、皆さんご存知かとは思いますが、
ACtiveRecord を単体で使ったことがない方は結構いらっしゃるかと思いますので、ご紹介します。
今回は DB は MySQL を使っています。
ActiveRecord を単体で使ってみる
##準備
まずは DB を用意しましょう。 MySQL にログインします。
mysql -u root
データベースを作ります。名前は今回sampleにします。
mysql> create database sample;
sampleデータベースに入ります。
mysql> use sample;
テーブルを作ります。名前は今回usersにします。Rubyの規約上、テーブル名は複数形にしてください(sをつける)
mysql> create table users (id int auto_increment not null primary key, name varchar(10));
一旦抜けましょう
mysql> exit
続いて ActiveRecord をインストールしましょう
$ gem install activerecord
mysql2もインストールします
$ gem install mysql2
##実装
これで準備ができたので Ruby のファイルを作ります
$ vi sample.rb
avtive_record の gem を呼び出し、DB の接続設定を以下のように記します
# ↓ require する時はアンダースコアがいるので注意
require 'active_record'
#DB接続設定
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost", #ローカルのDBに接続します。
username: "root", #ユーザー名
password: "", #設定したMySQLのパスワード
database: "sample", #接続したいDB名
)
更にUserクラスを設定します。これでDBのusersテーブルがいじれるようになります
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost", #ローカルのDBに接続します。
username: "root", #ユーザー名
password: "", #設定したMySQLのパスワード
database: "sample", #接続したいDB名
)
#以下追記
class User < ActiveRecord::Base
end
試しにUserテーブルにレコードを作りましょう
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost", #ローカルのDBに接続します。
username: "root", #ユーザー名
password: "", #設定したMySQLのパスワード
database: "sample", #接続したいDB名
)
class User < ActiveRecord::Base
end
#以下追記
User.create(name: "taro")
実行してみます
$ ruby sample.rb
ファイルを変更してレコードができたか確認しましょう
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost", #ローカルのDBに接続します。
username: "root", #ユーザー名
password: "", #設定したMySQLのパスワード
database: "sample", #接続したいDB名
)
class User < ActiveRecord::Base
end
#以下変更
puts User.find_by(name: 'taro').name
実行
$ ruby sample.rb
以下のように出ればOKです。
taro
#終わりに
今回は一つのファイルの中に設定など全て書きましたが、実際に使う時は、DB 接続設定を他の Ruby ファイルに書いて require するか、もしくは、YML ファイルに設定を書いて読み込んだりなどして使ってみてください。