純ruby上的activerecord如何使用?


#1

如題
小弟是ruby新手,想請教各位,如何能在ruby上使用activerecord操作資料庫?
google找到的都是rails的教學,英文資料對我來說也頗頭痛
像rails g mirgration就不知道怎麼在pure ruby下達到一樣的效果?!
求各位指點迷津,感謝!


#2

你可以看一下你的 model 下的 xxx.rb

通常是…

class User < ActiveRecord::Base

end

所以如果是純 ruby…

在目錄下寫個 Gemfile 中去把 activerecord 寫進去…gem “activerecord” (這個不確定名字查一下)

執行 bundle install

然後你寫個 xxx.rb

再用 ruby 語法…

require "rubygem"
require "activerecord"
把 activerecord 的 gem 包進來
(以上二行可能有字拼錯…google一下就好了)
這樣應該就可以用了…

不過應該要設定一下 db 的環境…

是沒有在純 ruby 下這樣用過 activerecord…
不過應該是這樣吧…??

再請 jc 補充了…


#3

純 ActiveRecord 這邊有,有問題可以再提出

至於 Ruby only 的 migration 其實也有人寫出來,類似

不過對我而言,你可以開一個 Rails 專案,只用 migration 即可,嘗試刪除一些你不要的檔案或資料夾,應該都可以過的(Rails可以不只有Rails? anyway 挑方便用的部分即可)


#4

感謝樓上指點迷津

我後來改的code如上圖所示
成功執行了,也成功創建資料庫
可是如果28到31行註解掉,然後再執行一次
它就會噴error,好像是說table已存在了
所以它每次執行都會去嘗試建立一次table?!
想問一下這可以怎麼解決呢?感謝


#5

Ruby 有專用的 error handling

begin
   case rand(2)
   when 0
     make_error
   when 1
     0/0
   end
rescue ZeroDivisionError => e
   puts 'yooo , r u 0 / 0?'
rescue Exception => e
   puts e.class #這很重要,取得 Exception class 就能打成上面的方式
   puts "yooo , I got error"
end

& 詳細請去看 Ruby rescue 的用法,高興還可以看自訂 exception / retry (小心loop) / ensure … 之類的用法,你會得到自由 : )

but 建議你還是把 migration 切出去,否則你的這個程式會越來越龐大,且無法進行遷移之類的,然後每次都重跑,整個就會脫褲子放屁之類的