2011年6月1日水曜日

Git/Rspec2/Cucumberの準備

gitのインストール
Synapticパッケージマネージャで行う

インストールしている間に次に進む。
$ rvm use 1.9.2@fwiffer
を実行しようかと思ったけど、.rvmrcを作って移動したら自動的にrvmが切り替わるようにする

.rvmrcでの自動切り替え設定
$ cd Desktop/hoge
$ vi .rvmrc
rvm use 1.9.2@fwiffer
$ cd .
あれ? 切り替わらない。
$ rvm info
No command 'rvm' found, but there are 20 similar ones
rvm: command not found
rvmが動作していない。。。



.bash_profileに書いたのがまずかったのかな?
調べた結果、.bashrcに書いてみる。
http://d.hatena.ne.jp/atsm/20110518/1305690506
$ vi ~/.bashrc
$ soruce ~/.bashrc
$ rvm info
動いた。次回は大丈夫かどうか新しい端末でやってみる。
...動いた。前回作ってしまった.bash_profileはrvmの事しか書かなかったから削除しておこう。

確認のため、新しく端末を立ち上げて
$ rvm info
動いてる。

先ほど.rvmrcを作ったディレクトリに移動
$ cd ~/Desktop/hoge
.rvmrcのメッセージが出た。これはyesにする。

どこに記録されているかというと、OSXの時は
~/.rvm/config/rvmrcs
の中にあった。
ubuntuを見てみると無い。
バージョンが違うのかな。

探してみる
$ find .rvm -name rvmrcs
.rvm/user/rvmrcs
ここにあるのか。
この=1を0にすると.rvmrcは無効になる。(OSXではそうでした)
増えていったらどうするんだろう。

gitのリポジトリの登録
gitのインストールが終わっている事を確認して、
$ cd ~/Desktop/hoge
$ git init
で準備完了
$ git status
で確認。
個人的にはgit statusはgだけで呼び出したいのでエイリアスを作成。
$ vi ~/.bashrc
読むと.bash_aliasesに書いた方が良さそう。
$ vi ~/.bash_aliases
alias g="git status"
$ source ~/.bashrc
$ g
エイリアスが作れた。

最初のコミットをしておく。
$ cd ~/Desktop/hoge
$ git add .
$ git commit
あれ?vimじゃなくて、nanoエディタが起動した。
Ctrl+xで終了させる。
gitのエディタはどうやって登録するんだろう。GIT_EDITORのような設定があるんだろうな。

環境変数EDITORで設定
http://d.hatena.ne.jp/ser1zw/20101226/1293297973

git configで設定
http://d.hatena.ne.jp/Seasons/20090331/1238526187

今回はgitの設定で行う。
$ git config --global core.editor 'vim'
後ろにオプションはつけないで様子をみる。
$ git commit
vimが起動した。
Rails3 initialize
とでも書いて保存してコミットする。

これでGitの準備は完了。

RSpec2をインストール
rspecはRailsから使う場合はpluginで良いかもしれないけど、gemにインストールする。
gem install rspecじゃなくて、
bundlerで書きたい。
$ vi Gemfile
group :test do
  gem 'rspec'
  gem 'rspec-rails'
end
保存して、
$ bundle install
.
.
Installing rspec-core (2.6.3) 
Installing rspec-expectations (2.6.0) 
Installing rspec-mocks (2.6.0) 
Installing rspec (2.6.0) 
Installing rspec-rails (2.6.1)
上記5つがインストールされた。

早速テスト。
https://github.com/rspec/rspec-rails
を見ると、rspec-railsはdevelopmentにも書く必要があるよう。
書き直す
$ vi Gemfile
group :test, :development do
  gem "rspec-rails", "~> 2.4"
end
rspecの項目を削除して書き換えてみる。(いいのかな)
$ script/rails generate rspec:install
create  .rspec
create  spec
create  spec/spec_helper.rb
準備完了。
このページにはautotestやCapybaraのインストールが書いてあるけど、今はいい。

Rspecでテストを書く
scaffoldを作ったらspecファイルも作成されるのかな?
$ rails generate scaffold topic user_id:integer title:string body:text
出力をみるとできてる!

とりあえず下記を追加
$ vi spec/model/topic_spec.rb
it "empty" do
[].should be_empty
end
を追加してみて、保存

実行が分からない。
$ rake -T
を見ると、
rake spec:models        # Run the code examples in spec/models
とあった。
$ rake spec:models
You have 1 pending migrations:
20110531122959 CreateTopics
Run "rake db:migrate" to update your database then try again.
おぉ。migrationしてなかった。
$ rake db:migrate
$ rake spec:models
テストできた。
どうやら、
bundle exec rspec ./spec/models/topic_spec.rb
を実行しているようだ。
$ bundle exec rspec spec/models/topic_spec.rb
でもテストできた。rakeで行うと、(恐らく)dbの初期化とか行ってくれるんだろうな。

cucumberをインストール
これもbundleでインストールする。
cucumber-railsはプラグインでも良いのだけれど、bundleでインストールしよう。
https://github.com/m3talsmith/cucumber-rails
$ vi Gemfile
group :test, :development do
  gem "rspec-rails", "~> 2.4"
  gem "capybara"
  gem "database_cleaner"
  gem "cucumber-rails"
end
$ bundle install
nokogiriのインストールでエラーが出た。
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
libxml2が必要。

rvm packageでlibxml2をインストール
$ rvm package install libxml2

結構時間がかかる。
rubyをインストールしなおすか分からないが、とりあえずbundleを実行
$ bundle install
やっぱりnokogiriでlibxml2の同じエラーが出る。rubyをインストールしなおす
$ rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-libxml2-dir=$rvm_path/usr

これ、1.9.2の最新がp180のままだから良いけど、バージョンが変わってしまったら違うのがインストールされてgemも変わるだろうなぁ。-headでインストールしても良いのかもしれないけど。ただ、もうGemfileを書いたのでgemのインストールは簡単にできる。

1.9.2のインストール後に再度bundleを実行
$ bundle install
うまく…いかない...
また同じエラー。なぜだろう?rubuのインストール時に-Cオプションが必要なのかな?でもそれだと、zlibとかopensslの時にもエラーが出ていても良いわけだし。

https://rvm.beginrescueend.com/packages/zlib/
rvmでパッケージをインストールするときに、zlibだけど、rubyを削除してから行っている。
一度削除して実行してみる。
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-libxml2-dir=$rvm_path/usr

Rubyをインストールしなおしたから、gemを作る。
$ rvm use 1.9.2
$ rvm gemset create fwiffer
$ rvm gemset use fwiffer

bundleを実行
$ bundle install
やっぱりlibxml2でエラーが出てしまう。
というか、gemは削除されていなかったみたい。

インストールの途中で調べていたら、rubyのインストールオプションで
--with-opt-dirというのがある。
http://d.hatena.ne.jp/ser1zw/20110430/1304104548

これが最後。インストールしなおし
$ rvm remove 1.9.2
$ rvm install 1.9.2 -C "--enable-shared=true,--with-opt-dir=$HOME/.rvm/usr"
インストール後再度bundleを実行。
試しに、rvm list、gem
を実行すると、既に1.9.2が設定されていて、gemも残っていた。

bundleを実行
$ bundle install
やっぱりlibxml2で同じエラー。
残念ながらUbuntuでlibxml2をインストール

Synapticパッケージマネージャからlibxml2-devをインストール
インストール後再度bundleを実行
$ bundle install
…あれ。またエラー。libxml2もインストールする必要があるのかな?

Synapticパッケージマネージャからlibxml2をインストール
インストール後再度bundleを実行
$ bundle install
…だめだ。これでもエラーが出る。うーん。
と、よく見ると、今度はlibxsltのエラーになってる!進んだ。

出力を見ると、libxml2-devをインストールしたらlibxsltのエラーに変わっていた。libxml2はインストールする必要がなかったのか。

Synapticパッケージマネージャからlibxslt-devをインストール
libxslt1-devというのがあったのでそれ。
インストール後再度bundleを実行
$ bundle install
あぁ。進んでいる。
無事にインストールコマンドが終わった。長かった。

cucumber-railsでスケルトン作成
$ ruby script/rails generate cucumber:skeleton --rspec --capybara

またエラーが出たよ。。。
/home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/sqlite3-1.3.3/lib/sqlite3.rb:6:in `require': libruby.so.1.9: cannot open shared object file: No such file or directory - /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/sqlite3-1.3.3/lib/sqlite3/sqlite3_native.so (LoadError)
だって。1.9.2を最後にインストールしたオプションが変だったのかな。
試しにRspecで実験。
$ rake spec:models
rake aborted!
libruby.so.1.9: cannot open shared object file: No such file or directory - /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/sqlite3-1.3.3/lib/sqlite3/sqlite3_native.so
やっぱり。Rubyをインストールしなおそう。
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-libxml2-dir=$rvm_path/usr
インストール後にrspecを動かす
$ rake spec:models
うまくテストができた。

ようやくcucumber
$ ruby script/rails generate cucumber:skeleton --rspec --capybara
Could not find generator cucumber:skeleton.
だって。。。

Rails2の時みたいに設定してみる。
ruby script/rails generate cucumber ja --rspec --capybar
Could not find generator cucumber.
cucumberのgenerator自体がないみたい。
もう一度bundle installを実行してみて実行したけど駄目。

Could not find generator cucumber:skeleton.で検索
http://blog.notahat.com/posts/43

rails g cucumber:install --rspec --capybara
が必要っぽい。

日本語化しておきたいので、Rails2の時のようにjaをつける
$ rails g cucumber:install ja --rspec --capybara
うまくいった!

cucumberのテストはgithubのExampleをやってみる
$ ruby script/rails generate cucumber:feature post title:string body:text published:boolean
$ ruby script/rails generate scaffold post title:string body:text published:boolean
$ rake db:migrate
$ rake cucumber
おぉ。テストができた。

今日はlibxml2で思いのほか時間がかかってしまった。

次は、redmineの準備。nginxとPassengerでやってみようかな。

0 件のコメント:

コメントを投稿