c-bata web

@c_bata_ のメモ。python多め

Ruby勉強内容まとめ2(ActiveRecordについて)

Rubyについての勉強が終わったので,ActiveRecodeについて勉強。 ActiveRecodeはRubyフレームワークであるSinatraRailsでも利用されているORマッパー(オブジェクトとRDBをマッピングする)のようです。

とりあえずVagrantで作成したローカル開発環境に,activerecordとsqlite3を入れるためにgemのインストールをしておく

sqlite3とactiverecordのインストール

gemが入っているので,これはもう簡単!

$ sudo gem update --system
$ sudo gem install activerecord
$ sudo gem install sqlite3

vimのインストール

FilezillaとSublime Textで作業しようかと思ってたのですが,結局使い慣れたVimで作業することに。 まずはVagrantで作成したCentOSVimをインストール

$ sudo yum install vim

次にvimrcの設定。 CentOSではvimrcは/etc/vimrcにあるので,全ユーザーに適用させたいならそこに追記すればいいのですが,僕の場合はホームフォルダ直下に.vimrcを作成して,そこに記述しています。

[vagrant@localhost ~]$ vim .vimrc
[vagrant@localhost ~]$ cat .vimrc
set number
syntax on
set tabstop=4
set autoindent
set expandtab
set shiftwidth=4

これで準備完了

ActiveRecordの勉強

ドットインストールのActiveRecordレッスンで勉強していきます。 ただし,ドットインストールと同じように進めようとするといきなりつまづいた・・・

active_recordがrequireできない

pythonでいうimport文のようなものは,rubyではrequire パッケージ名と記述するようです。 レッスンにそってblog.dbというsqlite3のデータベースを作成し,レッスンの第3回では,↓のソースコードのようにRubyからActiveRecordを使ってデータベースに接続しようとすると,

require 'active_record'
 
ActiveRecord::Base.establish_connection(
    "adapter" => "sqlite3",
    "database" => "./blog.db"
)
 
class Post < ActiveRecord::Base
end
 
post = Post.new(:title => "title1", :body => "hello1")
post.save
 
p Post.all

active_recordなんてありませんとエラーを吐かれた。 調べてみると,gemでインストールしたパッケージを使う時はrubygemsもrequireしないといけないらしいので追加してみるも,エラーのまま。他にもこちらのページこちらのページを見て,requireするときに./をパッケージ名の前に追加したりもしてみましたが,エラーのまま。

挫折しそうになりながらも調べていると,↓のページにたどり着きました。

sqlite3やactiverecordをインストールした時にエラーが出なかったので,ちゃんとインストールされていると思っていたのですが,gem listコマンドでインストール済みパッケージをみてみるとactiverecordがたしかに無い! どうやら一般ユーザと管理者で,gemのパスが違う可能性があるとのことなので,確認してみると・・・

[vagrant@localhost ar_lessons]$ which gem
~/.rbenv/shims/gem
[vagrant@localhost ar_lessons]$ sudo which gem
/usr/bin/gem

たしかにちがう。sudo gem installとやっても一般ユーザのgemにはパッケージがインストールされないみたい・・・ やっと原因が分かった・・・ 次回もう一度環境の構築方法についてまとめることにします。