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
とすれば良いようです.
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した方がいいんでしょうね.
まぁとりあえず動きます.
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
なるほど.