2009年3月28日 (土)

創る心とおもてなし~第一回webエンジニア料理対決に参加した

第一回Webエンジニア料理対決
に参加してきた。
最近よく参加している勉強会は最後に懇親会が定番だけど、今回は料理対決がメインでその後にライトニングトーク。料理も美味かったし。第二回も是非開催してください。できればパスタ料理対決で。(^^

では、その模様をちょっとだけ。。。。。

そういえば、料理対決に参加しているリクルート メディアテクノロジーラボさんのコマーシャライザー使わせてもらってます。(2009/3/30追記)

※ブラウザのJavaScriptをONにして、Flash Player9以上をインストールしてください。
Get Adobe Flash Player


料理対決に参加したチームはクックパッドチーム、Yahoo! Japanチーム、リクルートメディアテクノロジーラボチーム。

各チームの料理は・・・・・

・クックパッドチーム:餃子

アジャイルな餃子と、なっとうチーズ餃子、羽根つき餃子(ニーハオを思い出す)の3種
なっとうチーズは期待していたけどチーズがどっかに行っちゃってました。残念。

Img_0122


・リクルート メディアテクノロジーラボチーム:味つけは自分でやってねっ! タコス
結構ソースとか具とか適当に乗っけて食べたんですが、意外に砕いたポテチがアクセントで美味かった。
Img_0128


・Yahoo! Japanチーム:オムライス
このオムライスが個人的には一番美味かった。しかもライスはケチャップライスじゃなく、キムチライスみたい。一番辛いのが一番美味かったよ〜〜。ごちそうさまでした。
Img_0129


そして最後に、ライトニングトーク。初めにクックパッド:佐野 陽光さんの挨拶から
Img_0140

上からYahoo! Japan:一条裕仁さん、リクルート メディアテクノロジーラボ:寺井周平さん、クックパッド:根岸義輝さんのプレゼン。
寺井さんのプレゼンおもしろかったというかそこまで考えていたのかと感じるところが多かった。UIより裏方のDB側の比重が高い私には新鮮だった。と、空きっ腹にビール飲んでしまったのでこんな程度しか書けなくて m(_ _)m

Img_0141

Img_0142

Img_0149

ということで、楽しかったクックパッドを後にしたのでした・・・
Img_0152

あ、そうそうプロフィールには書いているけど、ついでなのでクックパッドにあるMy Kitchenのご紹介。w
6

ここで食べたものは妻のブログ:今日のゴハンでも載せる予定。た。(2009/3/30更新)

| | コメント (0) | トラックバック (1)

2008年12月 4日 (木)

Sun Tech Days 2008 in Tokyo 2日目

Sun Tech Days 2008 in Tokyo 2日目は(J)Ruby and Railsにだけ。JRuby関連で知らなかったことと知っているところ半々という内容だったので今後の参考になる内容だった、私にとってはいろいろな遊びのネタになりそう。

ところで、Sunの方のMac率、かなり高いよね。GoslingからしてMacBookだし(^^)

頂いたノベルティは「ブログ de ノベルティ」にて。

| | コメント (0) | トラックバック (0)

2008年11月12日 (水)

図書館のリサイクル本コーナーにて

妻はかなりの読書家で、近くの図書館をよく利用している。先日子供の散歩ついでにその図書館に立ち寄ると、大抵の図書館で行われているリサイクル本コーナーに前述のRuby本が! ラインマーカが多少あったがすごく奇麗だったこともあり早速利用させてもらっている。

図書館のリサイクル本コーナーを解説(必要ないか・・・w)しておくと、図書館利用者や図書館で不要な書籍を置いて行く、その逆に気に入った本があれば自由に持ち帰れる。というシステム。

何度か気になる本は見つけたが持ち帰りたいと思った本は無かったのだが今回はよい本を見つけた。ありがとう。

| | コメント (0) | トラックバック (0)

2008年6月29日 (日)

Mac de Ruby on Rails - #14 - IntelMac編 #5

さて、準備は整ったのでサンプルを作ってみましょう。利用するのはSCOTTスキーマのemp表。

Macintosh:test discus$ rails -d oracle emp_list
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib

・・・・・・中略・・・・・・

create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:test discus$
Macintosh:test discus$

scaffoldを使ってサンプルを作ってみます。
database.ymlの編集なども以前の記事と同じなので省略しますね。)

Macintosh:test discus$ vi emp_list/config/database.yml
Macintosh:test discus$
Macintosh:test discus$
Macintosh:test discus$ cd emp_list
Macintosh:emp_list discus$ rails ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:date sal:integer
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib
create lib/tasks
create log

・・・・・・中略・・・・・・

create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:emp_list discus$ ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.0 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel 1.1.4 available at 0.0.0.0:3000
** Use CTRL-C to stop.

でアクセスしてみると。。。でました〜。これでIntelMac上でもRoRからOracleへアクセスできるようになりました〜〜。:-)

Ror

Scaffold




バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2
Mac de Ruby on Rails - #12 - IntelMac編 #3
Mac de Ruby on Rails - #13 - IntelMac編 #4


| | コメント (0) | トラックバック (0)

2008年6月22日 (日)

Mac de Ruby on Rails - #13 - IntelMac編 #4

前回のつづき旧バージョンが悪さをしているようなのでこの際、残っている古いバージョンをuninstallしてしまえ! ということに。
尚、Leopardでは事前にRoRが/System/Library/Frameworks/Ruby.framework/以下にインストールされている。


Macintosh:test discus$ sudo gem uninstall activerecord --install-dir=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Select gem to uninstall:
1. activerecord-1.15.3
2. activerecord-1.15.6
3. activerecord-2.1.0
4. All versions
> 2

You have requested to uninstall the gem:
activerecord-1.15.6
actionwebservice-1.2.6 depends on [activerecord (= 1.15.6)]
rails-1.2.6 depends on [activerecord (= 1.15.6)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] Y
Successfully uninstalled activerecord-1.15.6
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Site/1.8/rubygems.rb:139:in `activate': can't activate activerecord (= 1.15.3), already activated activerecord-2.1.0] (Gem::Exception)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:354:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:230:in `establish_connection'
from test.rb:8
Macintosh:test discus$ sudo gem uninstall activerecord --install-dir=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Select gem to uninstall:
1. activerecord-1.15.3
2. activerecord-2.1.0
3. All versions
> 1

You have requested to uninstall the gem:
activerecord-1.15.3
actionwebservice-1.2.3 depends on [activerecord (= 1.15.3)]
rails-1.2.3 depends on [activerecord (= 1.15.3)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] Y
Successfully uninstalled activerecord-1.15.3
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:232:in `establish_connection': Please install the oracle adapter:
`gem install activerecord-oracle-adapter` (no such file to load -- active_record/connection_adapters/oracle_adapter) (RuntimeError)
from test.rb:8
Macintosh:test discus$
Macintosh:test discus$

お〜〜〜、忘れていました。 oracle_adapter.rbを。

ということで、oracle_adapter.rbをダウンロード後、/Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters以下へコピー。

Macintosh:test discus$ 
Macintosh:test discus$ curl -O http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/oracle_adapter.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27847 100 27847 0 0 28714 0 --:--:-- --:--:-- --:--:-- 66645
Macintosh:test discus$ ll
total 64
drwxr-xr-x 15 discus staff 510 6 14 07:31 emp_list
-rw-r--r-- 1 discus staff 27847 6 14 09:43 oracle_adapter.rb
-rw-r--r-- 1 discus staff 325 6 14 09:13 test.rb
Macintosh:test discus$ sudo cp oracle_adapter.rb /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters
Password:
Macintosh:test discus$
Macintosh:test discus$


再度、テストプログラムを実行。

Macintosh:test discus$ ruby test.rb
7934, MILLER,CLERK

動いた!。
ということで次回へつづく。


バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2
Mac de Ruby on Rails - #12 - IntelMac編 #3

| | コメント (0) | トラックバック (0)

2008年6月21日 (土)

Mac de Ruby on Rails - #12 - IntelMac編 #3

さて、少々間が空いてしまったがこれから暫くは土日中心に記事をアップすることが多くなるかも。(おチビちゃんの世話などいろいろあるのでね。w 土日に1週間分のネタを時間指定公開しるようにしておいてもよいかもしれないが、そのネタを纏めてる時間がなかなか取れない。く〜〜〜っ。という感じ。)

と長い前置きはこれくらいにして、本題です。前回は、ruby-oci8をインストールしたところまでだった。(自分でも忘れてる。。)
今日は確認のため以前PPC版の時も使ったテストコードでオラクルへアクセスできるか確認しておくことにする。

以下、PPC版の時と同じなのでさらりとながします。。

Macintosh:˜ discus$ mkdir test
Macintosh:˜ discus$ cd test
Macintosh:test discus$ rails -d oracle emp_list
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib
create lib/tasks
create log

・・・・中略・・・・

create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:test discus$

database.ymlを編集。編集内容は見ての通り。


Macintosh:test discus$
Macintosh:test discus$ vi emp_list/config/database.yml
Macintosh:test discus$ cat emp_list/config/database.yml
# Oracle/OCI 8i, 9, 10g
#
# Requires Ruby/OCI8:
# http://rubyforge.org/projects/ruby-oci8/
#
# Specify your database using any valid connection syntax, such as a
# tnsnames.ora service name, or a SQL connect url string of the form:
#
# //host:[port][/service name]
#
# By default prefetch_rows (OCI_ATTR_PREFETCH_ROWS) is set to 100. And
# until true bind variables are supported, cursor_sharing is set by default
# to 'similar'. Both can be changed in the configation below; the defaults
# are equivalent to specifying:
#
# prefetch_rows: 100
# cursor_sharing: similar
#

development:
adapter: oracle
database: lampeye
username: scott
password: tiger

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: oracle
database: lampeye
username: test
password: test

production:
adapter: oracle
database: lampeye
username: sample
password: sampleadmin

テストコードも以前作ったコードを使い回し。

Macintosh:test discus$ vi test.rb
Macintosh:test discus$
Macintosh:test discus$
Macintosh:test discus$ cat test.rb
require 'rubygems'
require 'active_record'

class Emp < ActiveRecord::Base
set_table_name "EMP"
end

ActiveRecord::Base.establish_connection(
:adapter => "oracle",
:database => "lampeye",
:username => "scott",
:password => "tiger"
)

emp = Emp.find(:first,:conditions =>["ENAME = ?", "MILLER"])
puts "#{ emp.empno}, #{ emp.ename}, #{emp.job}, #{emp.hiredate}"
Macintosh:test discus$
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Site/1.8/rubygems.rb:139:in `activate': can't activate activerecord (= 1.15.6), already activated
ctiverecord-2.1.0]
(Gem::Exception)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:354:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:230:in
establish_connection'
from test.rb:8


エラーメッセージをみると、activerecord-1.15.6なんてのが悪さしているようだ。。。

Macintosh:test discus$
Macintosh:test discus$ gem li

*** LOCAL GEMS ***

actionmailer (2.1.0, 1.3.6, 1.3.3)
actionpack (2.1.0, 1.13.6, 1.13.3)
actionwebservice (1.2.6, 1.2.3)
activerecord (2.1.0, 1.15.6, 1.15.3) activeresource (2.1.0)
activesupport (2.1.0, 1.4.4, 1.4.2)
acts_as_ferret (0.4.1)

・・・・中略・・・・
<
ruby-yadis (0.3.4)
rubygems-update (1.1.1)
rubynode (0.1.3)
sources (0.0.1)
sqlite3-ruby (1.2.1)
termios (0.9.4)

Macintosh:test discus$
Macintosh:test discus$

ということで、どうやら古いactiverecordが悪さしているらしい。。というところまでは分かった。。。uninstallすればいいらしい。どうやるか調べとく。=>TODO

ということで次回へ続く。




バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2


| | コメント (0) | トラックバック (0)

2008年6月15日 (日)

Mac de Ruby on Rails - #11 - IntelMac編 #2

さて、つづきです。ruby-oci8をインストールする。(ruby-oci8は、1.0.0を事前にダウンロードしておいた。尚、本記事を書いている時点では、1.0.1が最新。)

まず、make。

Macintosh:˜ discus$ ll
total 216
drwx------+ 32 discus staff 1088 6 8 23:25 Desktop
drwx------+ 10 discus staff 340 1 3 01:32 Documents
drwx------+ 14 discus staff 476 6 8 23:26 Downloads
drwxr-xr-x 10 discus staff 340 12 19 16:03 Image Browser
drwxr-xr-x 10 discus staff 340 12 19 16:57 Image Kit Browser
drwx------+ 32 discus staff 1088 3 1 14:07 Library
drwx------+ 3 discus staff 102 11 26 2007 Movies
drwx------+ 4 discus staff 136 2 2 11:12 Music
drwx------+ 9 discus staff 306 6 14 05:21 Pictures
drwxr-xr-x+ 5 discus staff 170 11 26 2007 Public
drwxr-xr-x+ 5 discus staff 170 11 26 2007 Sites
drwxr-xr-x 16 discus staff 544 11 25 2007 ruby-oci8-1.0.0
-rw-r--r-- 1 discus staff 107494 3 2 02:27 ruby-oci8-1.0.0.tar.gz
Macintosh:˜ discus$ cd ruby-oci8-1.0.0
Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... no
---------------------------------------------------
error messages:
Could not compile with Oracle instant client.
You may need to set a environment variable:
DYLD_LIBRARY_PATH=/Users/Shared/OracleInstantClient
export DYLD_LIBRARY_PATH

---------------------------------------------------
See:
* http://ruby-oci8.rubyforge.org/ja/HowToInstall.html
* http://ruby-oci8.rubyforge.org/ja/ReportInstallProblem.html

*** /Users/discus/ruby-oci8-1.0.0/ext/oci8/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.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=/Users/discus/ruby-oci8-1.0.0/ext/oci8
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
--with-instant-client
--without-instant-client
/Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:941:in `initialize': RuntimeError (RuntimeError)
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:236:in `new'
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:236:in `get'
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb:6
'system /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb ' failed
Try 'ruby setup.rb --help' for detailed usage.
make: *** [config.save] Error 1
Macintosh:ruby-oci8-1.0.0 discus$

checking for OCIInitialize() in oci.h... noというエラーが出てmakeできない。いろいろ調べてみたら、ruby-oci8 1.0.0はInteli386アーキテクチャのみ有効なようなので、以下のようにコンパイルオプションに"-arch i386"を追加すればインストールできるとのこと。
以下のサイトを参考にさせてもらった。
http://blog.rayapps.com/2008/04/24/how-to-setup-ruby-and-new-oracle-instant-client-on-leopard/

ということで再make。

Macintosh:ruby-oci8-1.0.0 discus$ export ARCHFLAGS="-arch i386"
Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... yes
checking for OCIEnvCreate()... yes
checking for OCITerminate()... yes
checking for OCILobOpen()... yes
checking for OCILobClose()... yes
checking for OCILobCreateTemporary()... yes
checking for OCILobGetChunkSize()... yes
checking for OCILobLocatorAssign()... yes
creating ../../lib/oci8.rb from /Users/discus/ruby-oci8-1.0.0/ext/oci8/../../lib/oci8.rb.in
creating extconf.h
creating Makefile
<--- ext/oci8
<--- ext
ruby setup.rb setup
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
make
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I/Users/discus/ruby-oci8-1.0.0/ext/oci8 -DRUBY_EXTCONF_H=\"extconf.h\" -fno
-common -arch i386 -Os -pipe -fno-common -I/Users/Shared/OracleInstantClient/sdk/include -Wall -c oci8.c

・・・・中略・・・・

cc -arch i386 -pipe -bundle -undefined dynamic_lookup -o oci8lib.bundle oci8.o handle.o const.o env.o error.o svcctx.o server.o session.o
stmt.o define.o bind.o describe.o descriptor.o param.o lob.o oradate.o oranumber.o ocinumber.o attr.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L.
-arch i386 -lruby -L/Users/Shared/OracleInstantClient -lclntsh -lpthread -ldl -lm
<--- ext/oci8
<--- ext
Macintosh:ruby-oci8-1.0.0 discus$
Macintosh:ruby-oci8-1.0.0 discus$ sudo make install
Password:
ruby setup.rb install
---> lib
mkdir -p /Library/Ruby/Site/1.8/
install oci8.rb /Library/Ruby/Site/1.8/
---> lib/DBD
mkdir -p /Library/Ruby/Site/1.8/DBD
---> lib/DBD/OCI8
mkdir -p /Library/Ruby/Site/1.8/DBD/OCI8
install OCI8.rb /Library/Ruby/Site/1.8/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
mkdir -p /Library/Ruby/Site/1.8/universal-darwin9.0/.
install oci8lib.bundle /Library/Ruby/Site/1.8/universal-darwin9.0/.
<--- ext/oci8
<--- ext
Macintosh:ruby-oci8-1.0.0 discus$


少々注意する点はあるがそれ以外は順調、順調。


バックナンバー:Mac de Ruby on Rails - #10 - IntelMac編 #1

| | コメント (0) | トラックバック (0)

2008年6月14日 (土)

Mac de Ruby on Rails - #10 - IntelMac編 #1

さて、やっと時間ができたので前回Leopard(IntelMac)のRosettaで動作させていたOracle Instant Client 10g R1 10.1.0.3.0 for MacOSX(PPC)からネイディブで動作するOracle Instant Client 10g R2 10.2.0.4.0 for MacOSX(Intel x86)へ入れ替えたのもこれをやるための準備。


Mac OS X 10.5.1 Leopard (Intel x86)にはRuby/Ruby on Railsがインストールされている。やっとx86ネイティブなOracle Instant Client for MacOSX(intel x86)がリリースされたのだからその環境を整えておかないと。。。というのがその理由。

では早速。今日は、Ruby on RailsとRubyGemsをアップデートするまで。

まずは、MacOSXの環境

Macintosh:˜ discus$ uname -a
Darwin Macintosh.local 9.3.0 Darwin Kernel Version 9.3.0: Fri May 23 00:49:16 PDT 2008; root:xnu-1228.5.18~1/RELEASE_I386 i386
Macintosh:˜ discus$
Macintosh:˜ discus$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.3
BuildVersion: 9D34
Macintosh:˜ discus$ /usr/sbin/system_profiler SPApplicationsDataType | grep Xcode

Xcode:
Get Info String: Xcode version 3.1
Location: /Developer/Applications/Xcode.app

次はRuby関連のバージョン確認(プレインストールされているRailsは2.xではなく、1.2.6なので今回は、2.1へアップデート RubyGemsもついでにアップデートしておく。)

Last login: Sat Jun 14 05:18:31 on console
Macintosh:˜ discus$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
Macintosh:˜ discus$ rails -v
Rails 1.2.6
Macintosh:˜ discus$ gem -v
1.0.1
Macintosh:˜ discus$
Macintosh:˜ discus$


では、railsのアップデートから。

Macintosh:˜ discus$
Macintosh:˜ discus$ sudo gem install rails --include-dependencies
Password:
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.8.1
Successfully installed activesupport-2.1.0
Successfully installed activerecord-2.1.0
Successfully installed actionpack-2.1.0

・・・・中略・・・・

Installing RDoc documentation for rake-0.8.1...
Installing RDoc documentation for activesupport-2.1.0...
Installing RDoc documentation for activerecord-2.1.0...
Installing RDoc documentation for actionpack-2.1.0...
Installing RDoc documentation for actionmailer-2.1.0...
Installing RDoc documentation for activeresource-2.1.0...
Macintosh:˜ discus$
Macintosh:˜ discus$

うまくいったようだ。。:)


お次は、RubyGemsのアップデート

Macintosh:˜ discus$
Macintosh:˜ discus$ sudo gem update --system
Updating RubyGems...
Attempting remote update of rubygems-update
Successfully installed rubygems-update-1.1.1
1 gem installed
Updating version of RubyGems to 1.1.1
Installing RubyGems 1.1.1
mkdir -p /Library/Ruby/Site/1.8/rbconfig
install -c -m 0644 rbconfig/datadir.rb /Library/Ruby/Site/1.8/rbconfig/datadir.rb
mkdir -p /Library/Ruby/Site/1.8/rubygems
install -c -m 0644 rubygems/builder.rb /Library/Ruby/Site/1.8/rubygems/builder.rb
install -c -m 0644 rubygems/command.rb /Library/Ruby/Site/1.8/rubygems/command.rb

・・・・中略・・・・

= Announce: RubyGems Release 1.1.1

Release 1.1.1 fixes some bugs.

Bugs Fixed:

* Gem.prefix now returns non-nil only when RubyGems was installed outside
sitelibdir or libdir.
* The `gem server` gem list now correctly links to gem details.
* `gem update --system` now passes --no-format-executable to setup.rb.
* Gem::SourceIndex#refresh! now works with multiple gem repositories.
* Downloaded gems now go into --install-dir's cache directory.
* Various fixes to downloading gem metadata.
* `gem install --force` now ignores network errors too.
* `gem pristine` now rebuilds extensions.
* `gem update --system` now works on virgin Apple ruby.
* Gem::RemoteFetcher handles Errno::ECONNABORTED.
* Printing of release notes fixed.

For a full list of changes to RubyGems including credits, see the ChangeLog
file.

・・・・中略・・・・

If you find a bug where RubyGems crashes, please provide debug output. You can
do that with `gem --debug the_command`.

== Thanks

Keep those gems coming!

-- Jim & Chad & Eric (for the RubyGems team)


------------------------------------------------------------------------------

RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem

If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.

RubyGems system software updated
Macintosh:˜ discus$
Macintosh:˜ discus$

こちらも問題なくアップデートできたようだ。


最後にバージョン確認。

Macintosh:˜ discus$
Macintosh:˜ discus$ gem -v
1.1.1
Macintosh:˜ discus$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
Macintosh:˜ discus$ rails -v
Rails 2.1.0
Macintosh:˜ discus$

順調、順調!

今日はここまで、次回へつづく。

| | コメント (0) | トラックバック (0)

2008年4月 2日 (水)

たくさんのRuby本

年に一度、書庫(と言っても仕事部屋のクローゼットを書庫にしているだけだが)の雑誌やら技術的に古くなってしまった技術本を処分するのだが、奥さんがjavaの仕事を始める前(最近よく聞く、Java -> RoRには逆行している)にRubyをやっていた頃の本だけに内容的には古い部分もある。。。。アマゾンのマーケットプレイスにでも出品しようかとも思ったが、結局残しておくことに・・・と決めたRuby本。全て初版本。奥さんは今はJavaをメインにやってはいるがRubyも好きなんだね。たぶん。

オブジェクト指向スクリプト言語 Ruby(初版) - 1999
Rubyプログラミング入門(初版) - 2000
Rubyライブラリ編(初版) - 2000
達人プログラマーガイド プログラミング Ruby(初版) - 2001
RubyによるCGIプログラミング(初版) - 2001
dRubyによる分散オブジェクトプログラミング(初版) - 2001
Ruby Gem Box ツール利用でここまでできる(初版) - 2002

| | コメント (0) | トラックバック (0)

2008年3月25日 (火)

オブジェクト指向スクリプト言語Ruby(書籍)

以前、奥さんが所蔵している書籍「オブジェクト指向スクリプト言語Ruby」は、著者御本人からサインを頂いてるサイン本だった! と奥さんから「強〜〜く主張してくれ」と言われていた。(はい、載せるのを忘れていましたとも、認めます)

ということで、その当時のサイン。(この書籍も希少だと思うけどサイン付きはさらに希少でしょ。多分)

Cimg0165

| | コメント (0) | トラックバック (0)

2008年3月10日 (月)

Mac de Ruby on Rails - #9 - ClubDB2番外編

Mac で Oracleな私ですが、第37回 ClubDB2番外編!Ruby on Rails 入門へ行ってきました。

いや〜〜、株式会社万葉の大場さんのセミナー面白かったですね。Mac使ってたし(笑)。
予定があったのでセミナー後の食事会?には参加できませんでしたが、RoRなどDB2から脱線?したネタがあればまた参加したいと思います。XMLDBネタが近々あるようだが、それはそれで聞いてみたい気もする。。


ちなみに、DB2の知識は、DB2 UDB 5.2で止まってる。。はず、と言いつつDBマガジンの記事は読んでますよ。


今回仕入れたネタも使って遊んだ結果などはいずれ。。。

2008/3/15追記
そう言えば、このセミナーで頂いたDB2 9:pureXML overview and fast startの紹介を忘れていたので追記しておきます。 (^^;;;
IBMさんのサイトではPDF版やHTML版が公開されている。

Db2_9_purexml_overview

| | コメント (0) | トラックバック (0)

Mac de Ruby on Rails - #8 - Oracleと遊ぶ #7

以前の記事で以下のように書いていたことを覚えていますか?

注)
赤太字で示したシンボリックリンクは今回事前に作成したもので、それらのシンボリックリンクは作成しなくても通常利用には問題ない。以前の記事参照のこと。
尚、今回は事前に参照していた資料にシンボリックリンクの作成に関する記述があったため前述のシンボリックリンクを作成した。
(ほんとうに必要なのか? という点については未検証であることを書き加えておく。余計なものだとしても悪さはしないでしょう。きっと。)


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4
Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5
Mac de Ruby on Rails - #7 - Oracleと遊ぶ #6

先日、興味本位で、もし、前述したシンボリックリンクを作成しなかったらどうなるかを試してみた。

Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
---------------------------------------------------
error messages:
Could not compile with Oracle instant client.
/Users/Shared/OracleInstantClient/libclntsh.dylib could not be found.
You may need to make a symbolic link.
cd /Users/Shared/OracleInstantClient
ln -s libclntsh.dylib.10.1 libclntsh.dylib

---------------------------------------------------
See:
* http://ruby-oci8.rubyforge.org/ja/HowToInstall.html
* http://ruby-oci8.rubyforge.org/ja/ReportInstallProblem.html

*** /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb failed ***

ご覧の通りエラーになりますし、シンボリックリンクが無いのが原因かもしれないと示唆される。分かり易くていいな〜。
当然、指摘された通りにシンボリックリンクを作成してあげれば問題は解消される。

| | コメント (0) | トラックバック (0)

2008年2月28日 (木)

Mac de Ruby on Rails - #7 - Oracleと遊ぶ #6

さて、前回まででRuby on Rails 2.0.2からOracle11g R1 11.1.0.6.0をアクセスするアプリケーションはできたのだが、まだ、幾つか手お加えたい箇所もある。例えばViewのタイトルやドロップダウンメニューが英語だとか、日付の表示が長過ぎるとか。

4


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4
Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5

そこで、indexページの日付フォーマットを変更してみることにする。(Viewというか、scaffoldでの日本語対応などまだまだ知らないことも多い。それらは次の機会のお楽しみということで・・・)

index.html.erbを以下のように変更して・・・・

pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$pb17:/Volumes/Repository/employee_list discus$ cd app/views/emps
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ cp index.html.erb index.html.erb.org
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ vi index.html.erb
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ diff index.html.erb.org index.html.erg
17c17,23
< <td><%=h emp.hiredate %></td>
---
> <td>
> <% if emp.hiredate %>
> <%=h emp.hiredate.to_formatted_s(:db) %>
> <% else %>
> <%=h emp.hiredate %>
> <% end %>
> </td>
pb17:/Volumes/Repository/employee_list/app/views/emps discus$
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ cd $OLDPWD
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:19:46] INFO WEBrick 1.3.1
[2008-02-24 16:19:46] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:19:46] INFO WEBrick::HTTPServer#start: pid=702 port=3000
127.0.0.1 - - [24/Feb/2008:16:20:05 JST] "GET /emps HTTP/1.1" 500 15280
- -> /emps
127.0.0.1 - - [24/Feb/2008:16:20:26 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/emps -> /favicon.ico
^C[2008-02-24 16:20:59] INFO going to shutdown ...
[2008-02-24 16:20:59] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/employee_list discus$ cd app/views/emps

6

なんとか、出来ましたね。RubyもRuby on Railsも始めてですが、なんとかここまでできました〜 :)

”Ruby on Rails2.0.2とOracle11gでそこそこ遊べる環境を作る” ひとまず、完!

| | コメント (0) | トラックバック (0)

2008年2月27日 (水)

Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5

Ruby on RailsでOracleとそこそこ遊べる環境構築もそろそろ終盤。
今回は、Ruby on RailsでOracle11g R1のデータベースをアクセスする簡単なアプリケーションを作ってみる。
尚、アプリケーションで利用する表は事前に作成しておいた。(Oracleにアクセスできることが確認できれば十分なので)


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4

まず事前に、emp表を元にemps表を作り、数件データを追加しておきます。

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 2月 24 15:55:07 2008

Copyright (c) 1982, 2004, Oracle. All rights reserved.

SQL> conn scott/tiger@lampeye
接続されました。
SQL> create table emps as select * from emp;

表が作成されました。

SQL> alter table emps rename column empno to id;

表が変更されました。

SQL> alter table emps add constraint emp_pk primary key (id);

表が変更されました。

SQL> create sequence emps_seq;

順序が作成されました。

SQL> insert into emps(id,ename) values(8888,'ヌルポ');

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> set linesize 132
SQL> set pagesize 1000
SQL> select * from emps order by id;

ID ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
8888 ヌルポ
9999 ほげ ENGINEER 7566 08-01-01 2500 20

14行が選択されました。

SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
pb17:˜ discus$
pb17:˜ discus$

次にOracleデータベースを利用するプロジェクトを作成します。
-d オプションを付けるとOracle向け構成ファイル:databaase.ymlを生成してくれます。

pb17:˜ discus$ cd /Volumes/Repository
pb17:˜ discus$
pb17:/Volumes/Repository discus$ rails -h
Usage: /opt/local/bin/rails /path/to/your/app [options]

Options:
-r, --ruby=path Path to the Ruby binary of your choice (otherwise scripts use env, dispatchers current path).
Default: /opt/local/bin/ruby
-d, --database=name Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).
Default: mysql
-f, --freeze Freeze Rails in vendor/rails from the gems generating the skeleton
Default: false

・・・・中略・・・・

Example:
rails ˜/Code/Ruby/weblog

This generates a skeletal Rails installation in ˜/Code/Ruby/weblog.
See the README in the newly created application to get going.

今回は、employee_listというプロジェクトを作ります。(コードとディレクトリーが自動的い生成されていく・・・)
database.ymlを環境の合わせ変更!

pb17:/Volumes/Repository discus$ rails -d oracle employee_list
create
create app/controllers
create app/helpers
create app/models

・・・・中略・・・・

create log/server.log
create log/production.log
create log/development.log
create log/test.log
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$ cd employee_list/config
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository/employee_list/config discus$ vi database.yml
pb17:/Volumes/Repository/employee_list/config discus$ cat database.yml
# Oracle/OCI 8i, 9, 10g
#
# Requires Ruby/OCI8:
# http://rubyforge.org/projects/ruby-oci8/
#
# Specify your database using any valid connection syntax, such as a
# tnsnames.ora service name, or a sql connect url string of the form:
#
# //host:[port][/service name]
#
# By default prefetch_rows (OCI_ATTR_PREFETCH_ROWS) is set to 100. And
# until true bind variables are supported, cursor_sharing is set by default
# to 'similar'. Both can be changed in the configation below; the defaults
# are equivalent to specifying:
#
# prefetch_rows: 100
# cursor_sharing: similar
#

development:
adapter: oracle
database: lampeye
username: scott
password: tiger

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
adapter: oracle
database: lampeye
username: test
password: tiger

production:
adapter: oracle
database: lampeye
username: prod
password: tiger
pb17:/Volumes/Repository/employee_list/config discus$
pb17:/Volumes/Repository/employee_list/config discus$
pb17:/Volumes/Repository/employee_list/config discus$

ここまでできたら、emps表を操作、表示するためのscaffold(足場)を生成する。(あれまあ、簡単にできるんだなぁ)

pb17:/Volumes/Repository/employee_list/config discus$ cd ..
pb17:/Volumes/Repository/employee_list discus$ ruby script/generate scaffold Emp
exists app/models/
exists app/controllers/
exists app/helpers/

・・・・中略・・・・

create app/controllers/emps_controller.rb
create test/functional/emps_controller_test.rb
create app/helpers/emps_helper.rb
route map.resources :emps
pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$

ではテスト用サーバを起動して確認!

pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:10:11] INFO WEBrick 1.3.1
[2008-02-24 16:10:11] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:10:11] INFO WEBrick::HTTPServer#start: pid=683 port=3000
127.0.0.1 - - [24/Feb/2008:16:10:31 JST] "GET / HTTP/1.1" 200 7557
- -> /
127.0.0.1 - - [24/Feb/2008:16:10:32 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/ -> /favicon.ico

・・・・中略・・・・

127.0.0.1 - - [24/Feb/2008:16:11:35 JST] "GET /stylesheets/scaffold.css?1203836970 HTTP/1.1" 200 1152
http://localhost:3000/emps -> /stylesheets/scaffold.css?1203836970
^C[2008-02-24 16:12:35] INFO going to shutdown ...
[2008-02-24 16:12:35] INFO WEBrick::HTTPServer#start done.

あれ〜〜、表の中身が表示されていない? なんで〜〜〜〜!

3

調べてみると、Ruby on Rails 2.xでは、scaffoldの使い方に違いがあるからということが理由とのこと。
ということでrailsのscaffold利用方法をを参照
/opt/local/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/generators/components/scaffold/USAGE


では早速、作り直してみる。

pb17:/Volumes/Repository/employee_list discus$ 
pb17:/Volumes/Repository/employee_list discus$ ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:date sal:integer
exists app/models/
exists app/controllers/

・・・・中略・・・・

exists test/functional/
exists test/unit/
overwrite app/views/emps/index.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/index.html.erb
overwrite app/views/emps/show.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/show.html.erb
overwrite app/views/emps/new.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/new.html.erb
overwrite app/views/emps/edit.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/edit.html.erb
identical app/views/layouts/emps.html.erb

・・・・中略・・・・

skip test/fixtures/emps.yml
exists db/migrate
Another migration is already named create_emps: db/migrate/001_create_emps.rb
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:15:40] INFO WEBrick 1.3.1
[2008-02-24 16:15:40] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:15:40] INFO WEBrick::HTTPServer#start: pid=696 port=3000
127.0.0.1 - - [24/Feb/2008:16:15:56 JST] "GET /emps HTTP/1.1" 200 12543
- -> /emps
127.0.0.1 - - [24/Feb/2008:16:16:17 JST] "GET /stylesheets/scaffold.css?1203836970 HTTP/1.1" 200 1152
http://localhost:3000/emps -> /stylesheets/scaffold.css?1203836970
127.0.0.1 - - [24/Feb/2008:16:16:17 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/emps -> /favicon.ico
^C[2008-02-24 16:17:22] INFO going to shutdown ...
[2008-02-24 16:17:22] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$

お〜〜〜〜、できた〜! 

4

次回いよいよ、Ruby on RailsとOracleでそこそこ遊べる環境作りの最終回。日付の表示が気に入らないので少々コードを変更してみる。

| | コメント (0) | トラックバック (0)

2008年2月26日 (火)

Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4

まず、前回の復習。
前回は、rubyからruby-oci8さらにOracle Instant Client 10gを介してOracle11g R1 EE 11.1.0.6.0のデータベースへアクセスできることを確認した。

今回は、rubyからActiveRecordを利用してOracle11g R1のデータベースへアクセスできるか確認する。


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3

コードは以下の通り。

pb17:˜ discus$
pb17:˜ discus$ cat test.rb
require 'rubygems'
require 'active_record'

class Emp < ActiveRecord::Base
set_table_name "EMP"
end

ActiveRecord::Base.establish_connection(
:adapter => "oracle",
:database => "lampeye",
:username => "scott",
:password => "tiger"
)

emp = Emp.find(:first,:conditions =>["ENAME = ?", "ほげ"])
puts "#{ emp.empno}, #{ emp.ename}, #{emp.job}, #{emp.hiredate}"

実行してみる!

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:231
:in `establish_connection': Please install the oracle adapter: `gem install activerecord-oracle-adapter`
(no such file to load -- active_record/connection_adapters/oracle_adapter) (RuntimeError) from test.rb:8

あ〜〜なるほど、ActiveRecordからruby-oci8を利用するためには、oracle_adapter.rbが必要なんですね! 
ということでoracle_adapter.rbをダウンロードし、/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters以下にコピーする。

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ cd :/Volumes/Repository/temp
pb17:/Volumes/Repository/temp discus$ curl -O http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/oracle_adapter.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27596 100 27596 0 0 25998 0 0:00:01 0:00:01 --:--:-- 43123
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$ sudo cp oracle_adapter.rb /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters
Password:
pb17:/Volumes/Repository/temp discus$

再度実行してみる!

pb17:/Volumes/Repository/temp discus$ cd
pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
9999, ほげ, ENGINEER, Tue Jan 01 00:00:00 +0900 2008
pb17:˜ discus$

お〜〜〜、上手くいった!〜〜。

今日はここまで、次回へつづく。

| | コメント (0) | トラックバック (0)

2008年2月25日 (月)

Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3

Mac de Ruby on Rails、オラクルと遊ぶ その3回目は、ruby-oci8の動作確認の意味も含め、rubyからociを使ってOracle11g R1のscott.emp表をアクセスしてみる。


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2

以下の操作は全て、Oracle Instant Client 10g R1 10.1.0.3.0 for MacOSX(PPC)をインストールしたPowerBook G4から行っている。

SQL*Plusを利用してSCOTTユーザのemp表の内容を確認しておく。

pb17:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 2月 24 15:47:19 2008

Copyright (c) 1982, 2004, Oracle. All rights reserved.

> conn scott/tiger@lampeye
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT> set linesize 132
SCOTT> set pagesize 1000
SCOTT> select * from emp order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
9999 ほげ ENGINEER 7566 08-01-01 2500 20

13行が選択されました。

SCOTT> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

pb17:˜ discus$

rubyからruby-oci8、さらにOracle Clientを介して、Oracle11g R1のscott.emp表をempno順に問い合わせて動作確認した結果。

pb17:˜ discus$
pb17:˜ discus$ ruby -r oci8 -e "OCI8.new('scott','tiger','lampeye').exec('select * from emp order by empno') do |r| puts r.join(','); end"
7369,SMITH,CLERK,7902,1980/12/17 00:00:00,800.0,,20
7499,ALLEN,SALESMAN,7698,1981/02/20 00:00:00,1600.0,300.0,30
7521,WARD,SALESMAN,7698,1981/02/22 00:00:00,1250.0,500.0,30
7566,JONES,MANAGER,7839,1981/04/02 00:00:00,2975.0,,20
7654,MARTIN,SALESMAN,7698,1981/09/28 00:00:00,1250.0,1400.0,30
7698,BLAKE,MANAGER,7839,1981/05/01 00:00:00,2850.0,,30
7782,CLARK,MANAGER,7839,1981/06/09 00:00:00,2450.0,,10
7839,KING,PRESIDENT,,1981/11/17 00:00:00,5000.0,,10
7844,TURNER,SALESMAN,7698,1981/09/08 00:00:00,1500.0,0.0,30
7900,JAMES,CLERK,7698,1981/12/03 00:00:00,950.0,,30
7902,FORD,ANALYST,7566,1981/12/03 00:00:00,3000.0,,20
7934,MILLER,CLERK,7782,1982/01/23 00:00:00,1300.0,,10
9999,ほげ,ENGINEER,7566,2008/01/01 00:00:00,2500.0,,20
pb17:˜ discus$
pb17:˜ discus$

順調、順調! 

次回へつづく。

| | コメント (0) | トラックバック (0)

2008年2月24日 (日)

Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2

さて、前回予告した通り、MacOSXのRuby on Rails 2.0.2からOracle11g R1 EE 11.1.0.6.0 for Linux x86Oracle Instant Client 10g R1 for MacOSX(PPC)を利用し、そこそこ遊べる環境を作ってみる。


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1

2008/2/26追記-文字エンコーディングに関する情報を書き忘れていたので追記
Oracle DB character set : Japanese_Japan.AL32UTF8
Oracle Client NLS_LANG : Japanese_Japan.AL32UTF8
ということで全てUTF-8で統一してあります。


まずは、Ruby on Railsの開発環境にするPowerBook G4の情報から

H/W: Apple PowerBook G4 1Ghz / RAM:1GB
OS : MacOSX 10.4.11 Tiger (XCode 2.4.1インストール済み)
Oracle Instant Client : Oracle Instant Client 10g R1 for MacOSX(PPC)
Ruby : 1.8.6 (2007-09-23 patchlevel 110) [powerpc-darwin8.11.0]
RubyGems : 1.0.1
Ruby on Rails : 2.0.2
ruby-oci8 : 1.0.0
MacOSX 10.4.11 TigerへのRuby on Rails 2.0.2のインストールはこちら。

そして、Ruby on Railsから接続するOracleデータベースサーバは(サーバっていうと大げさ過ぎるノートPCですが・・・・)

H/W: Dynabook SS SX/210LNLW (RAM:768MB)
OS : CentOS 5
DB : Oracle11g R1 EE 11.1.0.6.0 for Linux x86

という構成です。配置はこんな感じ

Ruby on Rails 2.0.2からOracle11g R1 EE 11.1.0.6.0 for Linux x86へ接続するためのOracle Instant Client 10g R1 for MacOSX(PPC)関連の環境変数の設定は以下のようになっている。
(MySQLやGlassFish関連の環境変数も見えるが今回の内容には一切関係ないので気にしないでくださいませ。)

尚、Oracle Instant Client 10g R1 for MacOSX(PPC)をMacOSX 10.4.11 Tigerへインストールする例は以前の記事を参考にしてみてください。

pb17:˜ discus$ cat .bash_profile
export PATH=/usr/local/mysql/bin:$PATH

alias mysql='mysql --set autocommit=0'

# for GlassFish
export GLASSFISH_HOME=˜/glassfish/glassfish
export PATH=/opt/local/bin:$PATH:$GLASSFISH_HOME/bin

. .bashrc
pb17:˜ discus$ cat .bashrc
alias ll='ls -lv'

ORACLE_INSTANT_CLIENT_HOME=/Users/Shared/instantclient10_1
export ORACLE_HOME=$ORACLE_INSTANT_CLIENT_HOME
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME


pb17:˜ discus$
pb17:˜ discus$ ls -l $ORACLE_HOME
total 182200
-r--r--r-- 1 discus orauser 21299 Apr 29 2004 README_IC.htm
-r--r--r-- 1 discus orauser 1461081 Jul 5 2004 classes12.jar
-r--r--r-- 1 discus orauser 1353 Oct 9 2003 glogin.sql
lrwxr-xr-x 1 discus orauser 20 Feb 16 12:43 libclntsh.dylib -> libclntsh.dylib.10.1
-rwxr-xr-x 1 discus orauser 14891264 Dec 13 2004 libclntsh.dylib.10.1
-rwxr-xr-x 1 discus orauser 27432 Oct 24 2004 libheteroxa10.dylib
-rw-r--r-- 1 discus orauser 1516340 Nov 16 2004 libnnz10.dylib
lrwxr-xr-x 1 discus orauser 18 Feb 16 12:44 libocci.dylib -> libocci.dylib.10.1
-rw-r--r-- 1 discus orauser 1841448 Oct 24 2004 libocci.dylib.10.1
-rwxr-xr-x 1 discus orauser 66160096 Dec 14 2004 libociei.dylib
-rwxr-xr-x 1 discus orauser 93028 Nov 9 2004 libocijdbc10.dylib
-rwxr-xr-x 1 discus orauser 744612 Oct 24 2004 libsqlplus.dylib
-r--r--r-- 1 discus orauser 54032 Jul 5 2004 ocrs12.jar
-r--r--r-- 1 discus orauser 1397543 Jul 5 2004 ojdbc14.jar
-r--r--r-- 1 discus orauser 5018319 Jul 7 2004 orai18n.jar
drwxr-xr-x 4 discus orauser 136 Dec 14 2004 sdk
-rwxr-xr-x 1 discus orauser 15660 Dec 13 2004 sqlplus
-rw-r--r-- 1 discus orauser 2072 Feb 16 13:19 tnsnames.ora
pb17:˜ discus$

注)
赤太字で示したシンボリックリンクは今回事前に作成したもので、それらのシンボリックリンクは作成しなくても通常利用には問題ない。以前の記事参照のこと
尚、今回は事前に参照していた資料にシンボリックリンクの作成に関する記述があったため前述のシンボリックリンクを作成した。
(ほんとうに必要なのか? という点については未検証であることを書き加えておく。余計なものだとしても悪さはしないでしょう。きっと。)


では、早速、Ruby on Rails 2.0.2からOracleへアクセスするための準備作業に取りかかることにする。
まず、RubyForgeからruby-oci8-1.0.0.tar.gzをダウンロード、解凍する。

pb17:/Volumes/Repository/temp discus$ curl -L -O http://rubyforge.org/frs/download.php/28396/ruby-oci8-1.0.0.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 104k 100 104k 0 0 41090 0 0:00:02 0:00:02 --:--:-- 77167
pb17:/Volumes/Repository/temp discus$ ll
-rw-r--r-- 1 discus admin 593589 Dec 17 14:57 MacPorts-1.6.0-10.4-Tiger.dmg
-rw-r--r-- 1 discus admin 239926399 Aug 14 2007 aug07_adc_refib_update.dmg
-rw-r--r-- 1 discus admin 326 Apr 28 2006 comics.sql
-rw-r--r-- 1 discus admin 107494 Nov 25 20:31 ruby-oci8-1.0.0.tar.gz
-rw-r--r-- 1 discus admin 204841 May 24 2007 rubygems-0.9.4.tgz
pb17:/Volumes/Repository/temp discus$ gzip -dc ruby-oci8-1.0.0.tar.gz | tar xvf -
ruby-oci8-1.0.0/
ruby-oci8-1.0.0/NEWS
ruby-oci8-1.0.0/ChangeLog
ruby-oci8-1.0.0/Makefile

・・・中略・・・

ruby-oci8-1.0.0/test/test_oci8.rb
ruby-oci8-1.0.0/test/test_oradate.rb
ruby-oci8-1.0.0/test/test_oranumber.rb
ruby-oci8-1.0.0/test/test_metadata.rb

解凍したらmakeする。Oracle Instant Clientをちゃんと認識しているのがわかる。

pb17:/Volumes/Repository/temp discus$ cd ruby-oci8-1.0.0
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/opt/local/bin/ruby /Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/instantclient10_1/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... yes
checking for OCIEnvCreate()... yes
checking for OCITerminate()... yes
checking for OCILobOpen()... yes
checking for OCILobClose()... yes
checking for OCILobCreateTemporary()... yes
checking for OCILobGetChunkSize()... yes
checking for OCILobLocatorAssign()... yes
creating ../../lib/oci8.rb from /Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8/../../lib/oci8.rb.in
creating extconf.h
creating Makefile
<--- ext/oci8

・・・中略・・・

/usr/bin/gcc-4.0 -I. -I. -I/opt/local/lib/ruby/1.8/powerpc-darwin8.11.0 -I/Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8 -DRUBY_EXTCONF_H=\"extconf.h\" -I/opt/local/include -fno-common -O2
-fno-common -pipe -fno-common -I/Users/Shared/instantclient10_1/sdk/include -Wall -c attr.c
cc -dynamic -bundle -undefined suppress -flat_namespace -o oci8lib.bundle oci8.o handle.o const.o env.o error.o svcctx.o server.o session.o stmt.o define.o bind.o describe.o descriptor.o
param.o lob.o oradate.o oranumber.o ocinumber.o attr.o -L"." -L"/opt/local/lib" -L. -L/opt/local/lib -lruby -L/Users/Shared/instantclient10_1 -lclntsh -lpthread -ldl -lobjc
<--- ext/oci8
<--- ext
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$

makeが無事終了したらinstallする。(sudoで!)

pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$ sudo make install
Password:
ruby setup.rb install
---> lib
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/
install oci8.rb /opt/local/lib/ruby/site_ruby/1.8/
---> lib/DBD
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/DBD
---> lib/DBD/OCI8
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/DBD/OCI8
install OCI8.rb /opt/local/lib/ruby/site_ruby/1.8/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin8.11.0/.
install oci8lib.bundle /opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin8.11.0/.
<--- ext/oci8
<--- ext
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$

ということでruby-oci8のインストールまで無事に終了した。(Ruby初心者の私でもなんとかできました。。。。 :)

つづく・・・・




参考にしたサイトを以下に載せておきます。
OTN:Ruby on Rails on Oracle: A Simple Tutorial
OTN:Ruby on Rails with Oracle FAQ
(但し、RoRもruby-oci8関連の設定方法も参考にはなりますが古いバージョンを利用した解説なので注意が必要ですね。)

Connecting Ruby on Rails to Oracle on an Intel Mac in Leopard (Mac OSX 10.5)
上記サイトの情報は(2008/2/24時点では比較的あたらしい、しかもIntel Macのネタですね。。

ruby-oci8 - Oracle Instant Client
ruby-oci8インストール手順

Rails supports Oracle 8i, 9i, and 10g.
How to Connect To Oracle
ruby 2.xでoracleを利用する設定関連など

以下、Rails 2 と Oracleを接続するためのdatabase.ymlの設定例の引用

Database_ymd_rails_2_and_oracle

oracle_adapter.rb
oracle_adapter.rbのダウンロード先

| | コメント (0) | トラックバック (0)

2008年2月22日 (金)

Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1

Mac de Ruby on Rails - #1でも書いたように、Mac で Oracle と Ruby on Rails で戯れることにした。

Oracle Instant Clientネタを幾つか書いたのだが、それらはMac で Oracle と Ruby on Rails で戯れるための準備だったのですよ。(いろいろ検索しても、MacOSXでOracleを使ったRoRのネタがあまり見つからなかったこともあり、そうなれば自分でやるのが一番というわけ)


2008/2/24追記
配置はこんな感じ。(Visual Paradigm for UML community Editonを利用)

Ror_oracle_uml_deployment_diag

ということで、ただ今準備中! 次回へつづく。



バックナンバー:
Mac de Ruby on Rails - #1

| | コメント (0) | トラックバック (0)

2008年1月22日 (火)

24(テレビドラマではないよ)

Wigitize

24時間で作られたドットコムサイト『Wigitize』でも取り上げられていたのでいろいろ覗いてみたついでにWidgetを作って貼付けてみた。元からあるココログの「最近の記事」と比べても見劣りしないでしょ。
記事にもあるように24時間でどのようにしてWigitizeを構築していったのか、プロセスが細かく書かれていて実に面白い。


ココログオリジナルの「最新の記事」(左)とWigitizeで作って少々加工した「最新の記事」(右)
9 8

あ、24時間で作るといえば、Wif2008の予選会も24時間で与えられたテーマのWebデザインを完成させるのが条件でしたね。予選の作品が公開されたようです。。。Wif2008ネタは別エントリで。

日本からは8チームエントリしているように見えるが実際には5チームとのこと。
Wif2008_preselect

| | コメント (0) | トラックバック (0)

2008年1月13日 (日)

Mac de Ruby on Rails - #1

さて、ウチの奥さんから遅れること?年、rubyをやってみようかと思っていたんですが中々手が進まず、風邪をひいてデータベースを触っていないこの時期に少しでも進めてみようと思い立ち私のPowerBook G4で環境作り。
ただ元来データベース周りが得意分野なのでRubyそのものというよりRuby on Railsで遊ぶことに。。。
今のところはデータベースはSQLite3を利用する環境なのですが・・いずれはOracleと繋げる予定・・・。

というのも・・・

S/N Ratioより引用

先週開催されていたオラクルの年次カンファレンス「Oracle OpenWorld 2007」の開始に合わせて、新サービス「Oracle Mix」のベータがローンチしました。Oracle Mixは、ソーシャル ネットワーク、アイデア共有、グループ コラボレーション、Q&Aフォーラムなどの機能を提供しています。

Oracle Mixは、Oracle Applications (オラクルの業務アプリケーション製品群) の開発チーム内のグループ「Oracle AppsLab」と、Martin Fowlerが所属していることでも有名なThoughtWorksが協力して開発したサービスです。

なんて事もあり興味を持ったとうのもあるんですけどね。

ところで、Oracle AppsLabといえば・・・以前私のエントリがPingback(かな?)でAppsLabのエントリにトラックバックされていたっけ。。。(^^;;;

ちなみに、Oracle Mixに登録しちゃってます。。:)
Oraclemix

さて、前置きはこれくらいにして本題です。。

奥さんのMacBook Proは既にMac OS X LeopardなのでなにもしなくてもRuby on Railsは利用できるんですが、私のPowerBook G4はまだMac OS X Leopardへアップデートしてないんですよいろんな都合で。なのでインストール作業から・・・・・

RubyもRuby on Railsも初めてなので、ググったり奥さんが買っていた書籍などを参考に・・・PowerBook G4 1Ghz(1GB ram) MacOSX Tiger 10.4.11へRuby on Railsをインストールしてみた。

MacPortsがあると便利とのことなのでまずは、MacPorts 1.6.0のTiger版をダウンロード。あとはMacPorts-1.6.0-10.4-Tiger.dmgをダブルクリック、さらにMacPorts-1.6.0.pkgをダブルクリックしてインストールすればOK。
Macport


MacPortsなどは、/opt/local以下にインストールされる。(XCodeは事前にインストールしておくべし。)

Last login: Sat Jan 12 20:01:35 on ttyp1
Welcome to Darwin!
pb17:˜ discus$ cd /opt/local/bin
pb17:/opt/local/bin discus$ ls
daemondo port portf portindex portmirror
pb17:/opt/local/bin discus $ port -v
MacPorts 1.600
Entering interactive mode... ("help" for help, "quit" to quit)
[local/bin] > quit
Goodbye
pb17:/opt/local/bin discus $


次にMacPortsのアップデート。

pb17:/opt/local/bin discus$ sudo ./port -v selfupdate
Password:
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... done
./
aqua/Affiche/
aqua/AppKiDo/
aqua/AquaLess/
aqua/ArpSpyX/

・・・・中略・・・・

zope/zope-zopezen/
zope/zope-zphotoslides/
zope/zope-zphotoslides/files/
zope/zope-zsyncer/

sent 74 bytes received 291810 bytes 20129.93 bytes/sec
total size is 16241925 speedup is 55.65

MacPorts base version 1.600 installed
receiving file list ... done

sent 73 bytes received 6617 bytes 2676.00 bytes/sec
total size is 3962384 speedup is 592.28

Downloaded MacPorts base version 1.600

The MacPorts installation is not outdated and so was not updated
selfupdate done!
pb17:/opt/local/bin discus$
pb17:/opt/local/bin discus$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]

MacOSX Tiger 10.4には、ruby 1.8.2は既にインストールされている。


環境変数 $PATHに/opt/local/binを追加。

pb17:/opt/local/bin discus $ echo $PATH
/opt/local/bin:/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/sbin

pb17:/opt/local/bin discus $ cd


次にRubyGemsパッケージ管理システムをMacPorts1.6を利用してインストール。インストール後には、Rubyも1.8.6へ更新されている。

pb17:˜ discus$ sudo port install rb-rubygems
Password:
---> Fetching expat
---> Attempting to fetch expat-2.0.1.tar.gz from http://downloads.sourceforge.net/expat
---> Verifying checksum(s) for expat

・・・・中略・・・・

---> Installing rb-rubygems 0.9.4_0
---> Activating rb-rubygems 0.9.4_0
---> Cleaning rb-rubygems
pb17:˜ discus$ ruby --version
ruby 1.8.6 (2007-09-23 patchlevel 110) [powerpc-darwin8.11.0]
pb17:˜ discus$


そしてRubyGemsでrailsをインストールしようとしたが、以下のようなエラーが発生して全くうまくいかない。。困った〜〜。

pb17:˜ discus$ sudo gem install rails --include-dependencies
Password:
/opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError)
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/source_info_cache.rb:6
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:12
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems.rb:112:in `manage_gems'
from /opt/local/bin/gem:10
pb17:˜ discus$


前述のエラーメッセージでググってみたら「ソースからインストールするとうまくいくよ!」という内容のエントリを発見。
/opt以下削除してから再度MacPortsのインストール及びアップデートからやり直し。(尚、$PATH環境変数へは。/opt/local/binは設定したまま)

pb17:˜ discus$ sudo port -v selfupdate
Password:
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... done

sent 74 bytes received 291834 bytes 11447.37 bytes/sec
total size is 16241915 speedup is 55.64

MacPorts base version 1.600 installed
receiving file list ... done

sent 73 bytes received 6621 bytes 4462.67 bytes/sec
total size is 3962384 speedup is 591.93

Downloaded MacPorts base version 1.600

The MacPorts installation is not outdated and so was not updated
selfupdate done!


次に、RubyGems 0.9.4をインストール(1.0.1がリリースされていたが敢て、古いバージョンをインストール)
curlを使わなくてもいいんですが・・・とりあえずコマンドで作業を進めて行きます。(このエントリの後半で1.0.1へアップデートします。)

pb17:˜ discus$ curl -L -O http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 200k 100 200k 0 0 49807 0 0:00:04 0:00:04 --:--:-- 81744

pb17:˜ discus$ tar zxvf rubygems-0.9.4.tgz
rubygems-0.9.4/
rubygems-0.9.4/.document
rubygems-0.9.4/bin/
rubygems-0.9.4/bin/gem

・・・・中略・・・・

rubygems-0.9.4/test/user_capture.rb
rubygems-0.9.4/test/yaml_data.rb
rubygems-0.9.4/TODO
pb17:˜ discus$


解凍したら setup.rbを実行してRubyGems 0.9.4をインストール。

pb17:˜ discus$ cd rubygems-0.9.4
pb17:˜/rubygems-0.9.4 discus$ sudo ruby ./setup.rb
Password:
---> bin
<--- bin
---> lib
---> lib/rbconfig
<--- lib/rbconfig

・・・・中略・・・・

<--- lib
Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
Removing old RubyGems RDoc and ri...
Installing rubygems-0.9.4 ri...
Installing rubygems-0.9.4 rdoc...

As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.

pb17:˜/rubygems-0.9.4 discus$


ソースからインストールしたRubyGemsを使ってrailsをインストール・・・

pb17:˜/rubygems-0.9.4 discus$ sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-2.0.2
Successfully installed rake-0.8.0
Successfully installed activesupport-2.0.2

・・・・中略・・・・

Installing RDoc documentation for actionpack-2.0.2...
Installing RDoc documentation for actionmailer-2.0.2...
Installing RDoc documentation for activeresource-2.0.2...
pb17:˜/rubygems-0.9.4 discus$ rails -v
Rails 2.0.2
pb17:˜/rubygems-0.9.4 discus$ cd
うまくいった〜〜。パチパチ。


ついでにSQLite3もインストール(こちらはMacPortsでインストールできた。)

pb17:˜ discus$ sudo port install sqlite3
---> Fetching gawk
---> Attempting to fetch gawk-3.1.5.tar.bz2 from http://ftp.gnu.org/gnu/gawk

・・・・中略・・・・

---> Installing sqlite3 3.5.4_0+darwin_8
---> Activating sqlite3 3.5.4_0+darwin_8
---> Cleaning sqlite3
pb17:˜ discus$


さらにSQLite3インターフェースのインストール

pb17:˜ discus$ sudo port install rb-sqlite3
Password:
---> Fetching rb-sqlite3
---> Attempting to fetch sqlite3-ruby-1.2.1.tar.bz2 from http://rubyforge.org/frs/download.php/17096/
---> Verifying checksum(s) for rb-sqlite3
---> Extracting rb-sqlite3
---> Configuring rb-sqlite3
---> Building rb-sqlite3 with target setup
---> Staging rb-sqlite3 into destroot
---> Installing rb-sqlite3 1.2.1_0
---> Activating rb-sqlite3 1.2.1_0
---> Cleaning rb-sqlite3
pb17:˜ discus$ sudo gem install sqlite3-ruby
Select which gem to install for your platform (powerpc-darwin8.11.0)
1. sqlite3-ruby 1.2.1 (mswin32)
2. sqlite3-ruby 1.2.1 (ruby)
3. sqlite3-ruby 1.2.0 (mswin32)
4. sqlite3-ruby 1.2.0 (ruby)
5. Skip this gem
6. Cancel installation
> 2
Building native extensions. This could take a while...
Successfully installed sqlite3-ruby-1.2.1
Installing ri documentation for sqlite3-ruby-1.2.1...
Installing RDoc documentation for sqlite3-ruby-1.2.1...
pb17:˜ discus$


インストールできたのでrailsアプリケーションの作成準備。


pb17:˜ discus$ cd /Volumes/Repository
pb17:/Volumes/Repository discus$ mkdir discus
pb17:/Volumes/Repository discus$ cd discus
pb17:/Volumes/Repository/discus discus$ rails rails-demo
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts

・・・・中略・・・・

create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
pb17:/Volumes/Repository/discus discus$
pb17:/Volumes/Repository/discus/rails-demo discus$ script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-01-13 22:59:27] INFO WEBrick 1.3.1
[2008-01-13 22:59:27] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-01-13 22:59:27] INFO WEBrick::HTTPServer#start: pid=15815 port=3000
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET / HTTP/1.1" 200 7557-
-> /
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/ -> /favicon.ico
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /javascripts/prototype.js HTTP/1.1" 200 125605
http://localhost:3000/ -> /javascripts/prototype.js
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /javascripts/effects.js HTTP/1.1" 200 38916
http://localhost:3000/ -> /javascripts/effects.js
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /images/rails.png HTTP/1.1" 200 1787
http://localhost:3000/ -> /images/rails.png
127.0.0.1 - - [13/Jan/2008:23:01:33 JST] "GET /rails/info/properties HTTP/1.1" 200 920
http://localhost:3000/ -> /rails/info/properties
^C[2008-01-13 23:02:09] INFO going to shutdown ...
[2008-01-13 23:02:09] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/discus/rails-demo discus$

なんとかここまでできました〜〜。
Ror_demo2


最後に、はじめにも書いていましたがgemsを最新版にアップデートしておきます。

pb17:˜ discus$ gem -v
0.9.4
pb17:˜ discus$ sudo gem update --system
Updating RubyGems...
Attempting remote update of rubygems-update
Successfully installed rubygems-update-1.0.1
Updating version of RubyGems to 1.0.1
Installing RubyGems 1.0.1
install -c -m 0644 rbconfig/datadir.rb /opt/local/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
install -c -m 0644 rubygems/builder.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/builder.rb
install -c -m 0644 rubygems/command.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/command.rb
install -c -m 0644 rubygems/command_manager.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb

・・・・中略・・・・

rm -rf /opt/local/lib/ruby/gems/1.8/doc/rubygems-0.9.4
Installing rubygems-1.0.1 ri into /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.0.1/ri...
Installing rubygems-1.0.1 rdoc into /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.0.1/rdoc...
As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.
RubyGems system software updated
pb17:˜ discus$ gem -v
1.0.1
pb17:˜ discus$

これでRubyGemsのアップデートもなんとか完了〜〜。ホッ。この続きは暇を見て調べながらやって行きましょうかね・・・・。


参考にしたサイトや書籍など。。
http://feeds.japan.cnet.com/~r/cnet/blog/kenn/~3/761095/
http://www.takezou.com/archives/2007/05/ror_install_on.html
http://i.loveruby.net/ja/projects/setup/doc/usage.html
http://mikilab.doshisha.ac.jp/dia/research/report/2006/1014/002/report20061014002.html
http://lapangan.net/darwinports/index.php?HowTo%2FUseMacPorts
http://rubyforge.org/
http://www.rubyonrails.org/down

| | コメント (0) | トラックバック (0)