軸はこーしろーからいきますよ

基本的にただの忘備録

active recordだけを使ってDB操作

active recordだけを使ってrubyからDBを操作するのを目標とします.
DBはmysqlを使っています.

gemのインストール

bundlerを使ってgemの管理をします.
システムのgemとごっちゃにならないようにパスの指定をして
bundle installしてやります.

まず作業フォルダ内にGemfileを作成し中身を

source 'https://rubygems.org'

gem 'activerecord'
gem 'mysql2'

とします.
そして,

$ bundle install --path vendor/bundle

を実行します.
そうすればvendor/bundle以下にGemfileに記述したgemを置いてくれます.

bundlerが入れたgemを使ってrubyを実行する場合,

$ bundle exec ruby hoge.rb

とすれば良いようです.

参考gem管理の新標準ツール"Bundler"のTips - 昼メシ物語

active recordを使う

適当にDB名:testdb,ユーザ名:testuser,pass:testpassという感じでデータベースがあったとします.

require 'active_record'

class Hoge < ActiveRecord::Base
  attr_accessible :code, :name
end

ActiveRecord::Base.establish_connection(
  :adapter  =>  'mysql2',
  :username =>  'testuser',
  :password =>  'testpass',
  :database =>  'testdb'
)
p fields = Hoge.find(1)

ActiveRecord::Base.establish_connectionで接続を確立します.
:adapterでmysql2としているのは,なんかRailsでそんなのをdatabase.ymlに書いた気がしたから…
その上のクラス宣言はRailsで作成されたmodelをまんま真似した感じです.
別ファイルにしてrequireした方がいいんでしょうね.
まぁとりあえず動きます.

参考RubyのコードからActiveRecordだけを使う方法

crontabからrvmとbundlerを使う

crontabから以上の環境を実行したい場合,
以下のように$HOME/.rvm/scripts/rvmを実行してやるとうまいこと環境変数を読みこんでくれるようです.

* * * * * source $HOME/.rvm/scripts/rvm; rvm your-ruby-version; cd /path-to-project/; bundle exec ruby your-script.rb

なるほど.

参考gem管理の新標準ツール"Bundler"のTips - 昼メシ物語

むすび

定期的にDBにデータを突っ込んでいくってことをしたかったので
rubyを使うならactive recordを使うのが楽なのかなーと.
じゃあbundlerでgemは管理するべきだよねーと.
rails絡み以外で使ったことなかったわー,調べるかー
という背景でした.