メイン

ruby on rails アーカイブ

2006年08月14日

MacOSX * rails

gdbmライブラリを含むようにrubyをmakeすると、rails及びrubygemが起動しなくなる不具合が発生。
正確にはrubyのconfigure時に/opt配下のopensslを見に行くのが悪いっぽい。

gdbmを見つけられるようにrubyのconfigureの時に--with-opt-dir=/opt/localオプションをつけるのだが、そこでopensslも見に行っているらしく、その/optからインストールされたopenssl.bundleがrailsの中で存在しないメソッドを呼び出しているために↓のようなエラーが起きる模様。

$ rails $ dyld: NSLinkModule() error $ openssl.bundleがどうのこうの

普通はreadline.bundleの設定が出来ていない時にこのエラーが起きるらしい。
今回はreadlineは問題ない模様。

opensslを入れ直せば直るかと思い

$ sudo port install openssl $ sudo port selfupdate $ sudo port install openssl

とか色々するも、エラーが起きて続行できない。
その他何をどうやっても/optをconfigureオプションで渡したrubyとrailsは共存しないらしい。


しょうがないので、もう一度rubyをconfigureしなおしてmakeする。
configureのオプションは以下。

$ ./configure --prefix=/usr/local --enable-pthread --with-readline-dir=/usr/local

あとは

$ make $ sudo make install $ sudo make install-doc

で完了。
この設定でconfigureしたrubyだと、gemやrailsがちゃんと動くようになる。



2006年11月09日

OSX * Rails * PostgreSQL

RailsにてMySQLでは無くPostgresを使いたいときは、とりあえずRubyからPostgreSQLに接続する用のライブラリを入れる必要がある。入れ方は簡単。gemで一発だ。

$ sudo gem install postgres-pr

あとは、適宜database.ymlも変更する。

$ vi config/database.yml
development:
adapter: postgresql
database: posgrails
username: postgres
password: postgres
host: localhost

これでオッケイ。


参考URL:http://wiki.rubyonrails.com/rails/pages/PostgreSQL


2006年11月21日

Cannot find gem for Rails =1.1.6

ActionMailerを使って、Postfixのalias経由でコマンドにパイプしようとしたときに、

Command output: Cannot find gem for Rails =1.1.6:


等というエラーが出て正常に動かなかった。
読んで字のごとくRails 1.1.6のgemがありませんよ、と言っているのだが、/usr/local/lib/ruby/gems/1.8/gemsにはちゃんとrails-1.16は入っている。


よく見てみると、/usr/lib/ruby/にもgemsというフォルダがあったので、中をのぞいてみるとrails-1.1.2だとかのちょい古いやつがブワーっと入っていた。
どうやらここを見に行っているようだ。


しょうがないので、

$ pwd
/usr/lib/ruby
$ ls -l
1.8
gems
site_ruby
$ sudo mv gems gems.bkup
$ ls -l
1.8
gems.bkup
site_ruby
$ sudo ln -s /usr/local/lib/gems gems
$ ls -lF
1.8
gems@ -> /usr/local/lib/ruby/gems
gems.bkup
site_ruby


と、これでrails-1.1.6のある/usr/local/lib/ruby/gemsを見に行く。
念のためgemsはgems.bkupとして保存。
.gemrcとかで設定するのがほんとだと思うが、まぁ動くのでヨシ。

2006年11月29日

max_allowed_packet

Railsでアップローダーを作って、バイナリをガシガシlongblobで入れるように設計してたら、突如

Error in ActionControlelr max_allowed_packet なんちゃら

という気持ち悪いのが出た。
これの対処法は、

/etc/my.cnfの

$ sudo vi /etc/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M   ←コレ

のmax_allowed_packetをデフォルトの1Mから、適当な値に変える。

$ sudo vi /etc/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
#max_allowed_packet = 1M
max_allowed_packet = 30M  ←コレ


これで、mysqldを再起動で指定したサイズまではいけるようになる。
ただ、longblobで持たせるのが間違っている気がしないでもないけど、動いたからヨシ。

About ruby on rails

ブログ「what a bringdown」のカテゴリ「ruby on rails」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはrubyです。

次のカテゴリはtomcatです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。