ActiveRecordを単体で使う(rails なしで)
概要
- ActiveRecordの挙動をみたいなー
- 多少中身知りたいなー
と、思ったので、ActiveRecordだけ単体で使ってみました。
グーグル先生に聞いてみたら、やってる方を発見したので、
その通りにやってみましたメモです。
前提条件
テスト環境
- Ubuntu 14.04.1-LTS
- ruby 2.2.2p95
- AcriveRecord4.2.4
- MySQL Ver14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
詳細
今回は、mysqlに直接手作業でデータを突っ込んで、
それを読みだすとこまでの簡単なお仕事です。
まずは、作業用にテキトウなディレクトリを掘る
$ mkdir ar_test $ cd ar_test
Gemfileに必要なGemを書いてインストール
Gemfileはこれ。
# Gemfile source "https://rubygems.org/" gem 'mysql2', '~> 0.3.20' gem 'activerecord' gem 'pry' gem 'pry-byebug'
- DBは、mysqlにするので、mysql2
- debugというか、調査にも使いたいので、pryとpry-byebug
- mysql2だけバージョン指定してるのは、最新だとなんかがうまくいかなかったから
でbundlerでインストール。
$ bundle install
今回は、ActiveRecordは、ver4.2.4。
# Gemfile.lock GEM remote: https://rubygems.org/ specs: activemodel (4.2.4) activesupport (= 4.2.4) builder (~> 3.1) activerecord (4.2.4) activemodel (= 4.2.4) activesupport (= 4.2.4) arel (~> 6.0) activesupport (4.2.4) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) arel (6.0.3) builder (3.2.2) byebug (8.0.1) coderay (1.1.0) i18n (0.7.0) json (1.8.3) method_source (0.8.2) minitest (5.8.2) mysql2 (0.3.20) pry (0.10.3) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) pry-byebug (3.3.0) byebug (~> 8.0) pry (~> 0.10) slop (3.6.0) thread_safe (0.3.5) tzinfo (1.2.2) thread_safe (~> 0.1) PLATFORMS ruby DEPENDENCIES activerecord mysql2 (~> 0.3.20) pry pry-byebug
インストール完了。
mysql準備
ARを使いたいので、次は、mysqlを準備。
DB作成
まずはDBの作成。今回は名前は、ar_testにしよう。
$ mysql -u<username> -p<password> mysql> create database ar_test; Query OK, 1 row affected (0.00 sec) mysql> show databases; +-----------------------+ | Database | +-----------------------+ | information_schema | | ar_test | | mysql | | performance_schema | | tpcc | +-----------------------+ 5 rows in set (0.04 sec)
テーブル作成とデータ挿入
テーブル名は、test_tables。
カラムとデータは、こんなのを作っておきます。
mysql> select * from test_table; +-------+---------+ | col01 | col02 | +-------+---------+ | 1 | value01 | | 2 | value02 | +-------+---------+ 2 rows in set (0.00 sec)
コマンドは、こんなん。
mysql> create table test_tables(col01 int not null primary key, col02 varchar(64)); Query OK, 0 rows affected (2.17 sec) mysql> show tables; +-------------------+ | Tables_in_ar_test | +-------------------+ | test_tables | +-------------------+ 1 row in set (0.01 sec) mysql> insert into test_tables (col01, col02) values (1, 'value01'); Query OK, 1 row affected (0.19 sec) mysql> insert into test_tables (col01, col02) values (2, 'value02'); Query OK, 1 row affected (0.97 sec) mysql> select * from test_tables; +-------+---------+ | col01 | col02 | +-------+---------+ | 1 | value01 | | 2 | value02 | +-------+---------+ 2 rows in set (0.00 sec)
これで準備はできた。
ActiveRecordを使ってみる
早速本題。使ってみよー!
↓↓こんなtest.rbを作ってみる。
# test.rb require 'rubygems' require 'bundler' Bundler.require require 'active_record' require 'pry' database_name = :ar_test ActiveRecord::Base.establish_connection adapter: 'mysql2', database: database_name, host: 'localhost' ################################### # ここより下にテスト用のコードをかく ################################### class TestTable < ActiveRecord::Base end test_tables = TestTable.all test_tables.each do |test_table| puts test_table.col01 puts test_table.col02 end
これを実行すると・・・
$ ruby ./test.rb 1 value01 2 value02
おーー。読めた読めた。
ちゃんとDBの値が出てきておりますよー!
これで一旦は使えるようになったのかな。
おしまい。