rvmでインストールしたrubyをapacheで使いたいんだけど、ハマってる。
やりたいこと
$ rvm install 1.9.2 $ rvm use 1.9.2 $ gem install pg
で、使ってみる
#!/home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -Ku require 'pg' : :
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- pg (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require'
pgを見つけれませんって言われる。
そして、
hsbtさんの[ruby][rvm] cron とかで rvm を使って何か動かす方法, [ruby][capistano] tDiary を capistrano で deploy するようにした - HsbtDiary(2011-01-17)を発見する。
早速、以下のパスでcgiを実行させる。
#!/home/rdera/.rvm/bin/ruby-1.9.2-p180 -Ku
これで、解決かと思ったが、またしても怒られる。
apacheのエラーログは以下のとおり。
(8)Exec format error: exec of '/home/rdera/www/index.rb' failed Premature end of script headers: index.rb
hsbtさんにアドバイスを頂く
apacheのOptionsにFollowSymLinksが怪しいということで、
確認するが指定している。
シンボリックリンクへのアクセス権も確認するが、
特に問題はない。
3月24日追記
3月25日追記
分かったこと。
/home/rdera/.rvm/bin/ruby-1.9.2-p180
は、ruby自体のバイナリファイルではなく、
以下のようなシェルスクリプトが実態である。
#!/usr/bin/env bash if [[ -s "/home/rdera/.rvm/environments/ruby-1.9.2-p180" ]] ; then source "/home/rdera/.rvm/environments/ruby-1.9.2-p180" exec ruby "$@" else echo "ERROR: Missing RVM environment file: '/home/rdera/.rvm/environments/ruby-1.9.2-p180'" >&2 exit 1 fi
そのため、apcheが実行できてないと思うんだけど、
解決用方法は以前、分からない。
その後
id:znzさんの助言を参考に以下のように対応し、
一応、解決した。
cgiを実行される際に呼び出されるindex.cgiを
以下のように変更。
変更前
#!/home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -Ku
変更後
#!/bin/env /home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
/home/rdera/.rvm/bin/ruby-1.9.2-p180の
実態であるシェルスクリプトを以下のように変更。
変更前
#!/usr/bin/env bash if [[ -s "/home/rdera/.rvm/environments/ruby-1.9.2-p180" ]] ; then source "/home/rdera/.rvm/environments/ruby-1.9.2-p180" exec ruby "$@" else echo "ERROR: Missing RVM environment file: '/home/rdera/.rvm/environments/ruby-1.9.2-p180'" >&2 exit 1 fi
変更後
#!/usr/bin/env bash if [[ -s "/home/rdera/.rvm/environments/ruby-1.9.2-p180" ]] ; then source "/home/rdera/.rvm/environments/ruby-1.9.2-p180" exec ruby -Ku "$@" else echo "ERROR: Missing RVM environment file: '/home/rdera/.rvm/environments/ruby-1.9.2-p180'" >&2 exit 1 fi