2012年3月8日木曜日

Railsのcloneとdup

昔と今でActiveRecord#clone, ActiveRecord#dupの動作が入れ替わっている気が、
バージョン3.2.2で確認
Schedule.first.clone.id
=> 1
Schedule.first.dup.id
=> nil

こんなんだったっけ?逆じゃなかった?
CHANGELOG見ると
* ActiveRecord::Base#dup and ActiveRecord::Base#clone semantics have changed
to closer match normal Ruby dup and clone semantics.
* Calling ActiveRecord::Base#clone will result in a shallow copy of the record,
including copying the frozen state. No callbacks will be called.
* Calling ActiveRecord::Base#dup will duplicate the record, including calling
after initialize hooks. Frozen state will not be copied, and all associations will be cleared. A duped record will return true for new_record?, have a nil id field, and is saveable.

だって。ソース追いたいけど、定義場所どこかを調べるの大変だよなぁ。
source_locationとかでちゃちゃっといけないもんかね

2011年8月19日金曜日

RSpecでJSONをPOST

RSpecでJSONのPOSTをする方法がよくわからなかったが、以下のようにするといけた。
request.env['CONTENT_TYPE'] = "application/json"
request.env['RAW_POST_DATA'] = [jsonデータ]

とりあえず以下ヘルパーを作成しときました。
module JsonRequest
module TestHelpers

def json_post(action, json, *argument)
   request.env['CONTENT_TYPE'] = "application/json"
   request.env['RAW_POST_DATA'] = json
   post action, *argument
end
end
end

RSpec.configure do |config|
config.include JsonRequest::TestHelpers, :type => :controller
end

2010年10月16日土曜日

TokyoCabinet TokyoTyrantをCentOSにインストール

CentoOS5.5にインストールTCとTTをインストール。
もちろんpacoを使用。

まずはTC
yum install bzip2-devel
tar -xvzf tokyocabinet-1.4.46.tar.gz
cd tokyocabinet-1.4.46
make
paco -D make install

んでTT
tar -xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure --prefix=/usr
make
paco -D make install

インスト終了

テーブルごとインスタンスを立ち上げる必要があるため
ttservctlをテーブル毎にコピーして使用する。

cp /usr/sbin/ttservctl [テーブル用dir]ttservctl
ttservctlのbasedirを[テーブル用dir]に指定。
あとportとbnumを適当にいじって
[テーブル用dir]ttservctlを実行

2010年9月13日月曜日

CentOS5のgitインストール

CentOSにgitをインストールしようとしてもリポジトリにない。
せっかくpacoをインストールしたんで、ソースからインストール


wget http://www.kernel.org/pub/software/scm/git/git-1.7.2.tar.bz2
tar jxvf git-1.7.2.tar.bz2
cd git-1.7.2
./configure --prefix=/usr
make
paco -D make install

以下確認

git --version
paco -ua
paco -a

おけ

2010年9月10日金曜日

mongoidでrails起動

rails3RCをmongoidできどうします。

まずはプロジェクトの作成
rails new [プロジェクト名] -O -J -T

Jquery,mongoid,rspecでいくのでオプション付き。

プロジェクト直下のGemfileに以下を記述

gem 'rails', '3.0.0.rc'
gem "mongoid", "2.0.0.beta.16"
gem 'bson_ext', '1.0.4'


以下コマンドで設定ファイルの作成
rails generate mongoid:config


mongodbの起動
/etc/init.d/mongod start

rails起動
rails s

http://localhost:3000/で起動を確認

モデルの作成
rails g model Hoge

モデルに「include Mongoid::Document」が記載されていればOK

2010年9月6日月曜日

rails3とmongoidのインスト

rails3とmongoidのインストールをやってみる。
先日rails3RC2とmongoidでは依存してるライブラリのバージョン関係
で動かなかったのでrails3正式版がでたけどRC版で。

railsのインストール

gem install rails -v "3.0.0.rc"


bsonのインストール
gem install bson -v "1.0.4"


mongoidのインストール
gem install mongoid --pre


bson_extのインストール
gem install bson_ext



はやくmongoidの正式版がでないかなぁ。

2010年9月2日木曜日

パッケージがないときの管理

CentOSとかだとrubyとかパッケージないときはcheckinstall使ってた。
checkinstallのメニューとかだるいなぁと思ってたら「paco」なるものがあるらしい。
なので使ってみる。
pacoのインストール

wget http://downloads.sourceforge.net/paco/paco-2.0.9.tar.gz
tar xvzf paco-2.0.9.tar.gz
cd paco-2.0.9
./configure --disable-gpaco
make
make install
make logme


rubyのインストール

yum -y install zlib-devel
yum install openssl-devel
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz
tar xvzf ruby-1.8.7-p302.tar.gz
cd ruby-1.8.7-p302
./configure --prefix=/usr
make
paco -D make install
確認 ruby -v

rubygemsのインストール
wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
tar xvzf rubygems-1.3.7.tgz
cd rubygems-1.3.7
paco -D ruby setup.rb
確認 gem -v


MongoDBのインストール
vi /etc/yum.repos.d/10gen-mongodb.repo
以下を張り付け
[10gen]
name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/i386/
gpgcheck=0
yum install mongo-stable mongo-stable-server