15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby 単体で ActiveRecord を使いたい

Last updated at Posted at 2020-03-26

はじめに

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 の接続設定を以下のように記します

sample.rb

# ↓ require する時はアンダースコアがいるので注意
require 'active_record' 

#DB接続設定
 ActiveRecord::Base.establish_connection( 
  adapter:  "mysql2", 
  host:     "localhost", #ローカルのDBに接続します。
  username: "root", #ユーザー名
  password: "",  #設定したMySQLのパスワード
  database: "sample",  #接続したいDB名
)

更にUserクラスを設定します。これでDBのusersテーブルがいじれるようになります

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

試しにUserテーブルにレコードを作りましょう

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

#以下追記
User.create(name: "taro")

実行してみます

$ ruby sample.rb

ファイルを変更してレコードができたか確認しましょう

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 ファイルに設定を書いて読み込んだりなどして使ってみてください。

15
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?