2011年5月30日月曜日

Ruby1.9/Rails3の環境を準備する

何もインストールされていないUbuntuにインストールする

まずはrvm
https://rvm.beginrescueend.com/
$ curl -s https://rvm.beginrescueend.com/install/rvm -o rvm-installer ; chmod +x rvm-installer ; ./rvm-installer --version latest
curlのインストールがされていなかった。
$ sudo apt-get install curl

インストール後に再度rvmのインストールコマンドを実効。



配置ができたら、
.bash_profileの最下部に
[[ -s "/home/k10i/.rvm/scripts/rvm" ]] && source "/home/k10i/.rvm/scripts/rvm"
を記述する。
ターミナルに戻り、
$ source .bash_profile
で再読み込み。
$ type rvm | head - 1
rvm is a function
と表示される。
[追記]ubuntuでは.bash_profileでは駄目で、.bashrcに書く。

Ruby1.9.2をインストール
$ rvm install 1.9.2
たしか、OSXではirbで日本語が文字化けした。
Ubuntuはどうだろう?

...それ以前にターミナルで日本語が入力できない...
これはおいておく。

gemsetを作成
$ rvm gemset create fwiffer

Rails3のインストール
$ gem install rails
ERROR:  Loading command: install (LoadError)
no such file to load -- zlib
ERROR:  While executing gem ... (NameError)
uninitialized constant Gem::Commands::InstallCommand
zlibがないのか。。。

rvmのpackageでzlibをインストール
$ rvm package install zlib
$ rvm uninstall 1.9.2
$ rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr


待っている間にchromeをインストール。
Ubuntuのシステム情報を調べる
$ uname -a
Linux ubuntu 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 01:41:57 UTC 2010 i686 GNU/Linux
64ビット.debを選択すると、Ubuntuソフトウェアセンターで、間違ったアーキテクチャとなってしまった。amd64だと思われている。
と思ったら、i686は32bitか。64bitはx86_64

32ビット.debをインストールできるか試してみる。

Ruby1.9.2のインストールが完了。

再度Rails3をインストール
1.9.2を削除するとgemsetも消去されるので作り直してインストール。
$ rvm gemset create fwiffer
$ rvm gemset use fwiffer
$ gem install rails
インストールはできているが、riとrdocの作成に時間がかかっている。
no-ri|docオプションを忘れた。。。

Rails3のインストールが完了。3.0.7がインストールされた。

次からriとrdocは作成しないように、デフォルトでrdocとriは作成しないようにする。

gemコマンドのデフォルトオプションの設定
$ vi ~/.gemrc
gem: --no-ri --no-doc
を追加。

Railsのテストプロジェクトの作成
$ cd Desktop
コマンドはRails2との違いがある。

$ rails new hoge
$ cd hoge
scaffoldも違う
$ rails generate scaffold user name:string password:string
Could not find gem 'sqlite3 (>= 0)' in any of the gem sources listed in your Gemfile.
sqlite3のgemがインストールされていない。
Rails3からは、Bundlerでgemを管理できる。すごく便利。
(Rails2でもBundlerはboot.rbを少し習性すれば使える)
$ bundle install
Gem files will remain installed in /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/sqlite3-1.3.3 for inspection.
Results logged to /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out
sqlite3はUbuntuにインストールした覚えがないのでエラーが出ている。

sqlite3のインストール
$ sudo apt-get install sqlite3
[sudo] password for k10i: 
E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?
なぜ?
...chromeのインストールがまだ終わっていなかった。
終わるのを待ってから再度実行。

インストール完了。

再度bundle install
$ bundle install
その隙に、インストールされたchromeをランチャに追加。

あれ?
bundle installでまたsqlite3のエラーが出ている。
sqlite3がインストールされたか確認。
$ which sqlite3
/usr/bin/sqlite3
インストールされているはず。

エラーをよく見る
/home/k10i/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb 
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite3-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.
aptに関するヒントはない。これを見ると、shared libraryがないのかな。
Googleで調べる
libsqlite3-devが必要なのかな?

Synpaticパッケージマネージャで見てみる。
libsqlite3-ruby1.8
libsqlite3-ruby1.9.1
というのもあったけど、1.9.2なので、libsqlite3-devをインストールしてみる。

インストール後、再度bundle install
$ bundle install
インストールがうまくいった。libsqlite3-devが必要でした。

scaffoldを再度実行。
$ rails generate scaffold user name:string password:string
うまく作成できた。
続いてmigrate
$ rake db:migrate
rake aborted!
undefined method `task' for #
エラー...
rakeのバージョンで似たようなエラーを見たことがあるけど、Googleで調べる。

やっぱりrakeのバージョン。
http://labs.appshelf.info/2011/05/21/238/

0.9.0を削除してもよいと思うけど、ここは書いてある通りの対策をする。

emacsを起動して編集と思ったらemacsもインストールしていなかった。
Synpaticパッケージマネージャを開いていたのでそこからインストール。

時間がかかるからviで。
... 素のviか。vimになっていない
編集モード中に矢印が使えないから、モードをきちんとして編集。後でvimもインストールする。
#Rakefile
require File.expand_path('../config/application', __FILE__)
require 'rake'

module ::Hoge
  class Application
    include Rake::DSL
  end
end
module ::RakeFileUtils
  extend Rake::FileUtilsExt
end
Hoge::Application.load_tasks
再度migrate
$ rake db:migrate
うまく実行できた。

サーバを起動。これもRails2とはコマンドは違う。
$ rails server
で起動
http://127.0.0.1:3000/users
にアクセスする。
...no such file to load -- openssl
ってエラーが出る。zlibもインストールが必要。

rvm packageでopensslをインストール
インストール。zlibの時は、rubyをuninstallしたけど、今度は、uninstallしないでやってみる。
$ rvm package install openssl
$ rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr
インストールできた。

再度サーバを起動
$ rails server
http://127.0.0.1:3000/users
にアクセスする。

無事に動きました:D

次は、gitの準備とテスト開発の準備を行っていこうと思う。

0 件のコメント:

コメントを投稿