「Ruby」カテゴリーアーカイブ

Install Ruby 1.9.3 with libyaml on CentOS

CentOS 5.8にRuby 1.9.3をソースからインストール後、gemを実行したら、

It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

というワーニングが出た。

libyamlはyumになかったので、LibYAML – PyYAMLからソースをダウンロードしてインストール。
その後Ruby 1.9.3を再インストールしたらワーニングは出なくなった。

Install Ruby 1.9.3 with libyaml on CentOS // Collective Idea.

gemを全部削除する

わけあって、インストールされているgemを全部削除した。
手順は、以下の通り。

  1. gem listでインストールされているgemをリストする。
  2. リストしたgemのかっこで囲まれたバージョン情報のところと改行を削除して、スペース区切りのリストにする。
  3. 以下で一括削除。
    $ sudo gem uninstall -Ixa actionpack activemodel activerecord ...(以下gemのスペース区切りリスト)

optionの意味は、

-a, --[no-]all                   Uninstall all matching versions
-I, --[no-]ignore-dependencies   Ignore dependency requirements while
                                 uninstalling
-x, --[no-]executables           Uninstall applicable executables without
                                 confirmation

もっと良い方法がありそうだけど。

cronでRVMのRubyを使う

RVMで複数のRuby環境がある場合に、Railsアプリケーションのためのcronをどうするか? Rubyのパスはフルパス指定すればいいが、gemがRVMのgemを見に行かないのが問題。RVM環境でcronを実行する必要がある。

RVM: Ruby Version Manager - Using Cron with RVM

cron用のシェルスクリプト内で使用するRVM環境をロードするには以下のようにする。

まず、環境ファイルのパスを確認。

$ rvm env --path -- ruby-version[@gemset-name]

実行例

$ rvm env --path -- 1.8.7-p371
/Users/pistolfly/.rvm/environments/ruby-1.8.7-p371

cron用のシェルスクリプトで環境ファイルを読み込む

source /Users/pistolfly/.rvm/environments/ruby-1.8.7-p371

/home/pistolfly/app_dir
ruby script/runner -e production "ActiveRecord::SessionStore::Session.delete_all(['sessions.updated_at < ?', 6.hours.ago])"

Mac OS X Lion RVMのRuby1.9.3でSegmentation fault

RVMでMac OS X LionにRuby1.9.3をインストール後、bundleしたらSegmentation faultが発生。

$ bundle
Fetching source index for https://rubygems.org/
/Users/pistolfly/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.3.0]
...

解決方法

$ rvm pkg install openssl
$ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr

Ruby 1.9.3 + Rails 3.2.1 で segmentation fault -> 解決 - さとうようぞうのblog
RVM: Ruby Version Manager - 'rvm pkg install openssl'

CentOSにRVMをマルチユーザ用にインストール

マルチユーザ用にRVMをインストール

マルチユーザ用にRVMをインストールするには、sudo でインストールする。
RVM: Ruby Version Manager - Installing RVM

$ sudo bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
Downloading RVM from wayneeseguin branch stable
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
Could not download 'https://github.com/wayneeseguin/rvm/tarball/stable'.
  Make sure your certificates are up to date as described above.
  To continue in insecure mode run 'echo insecure >> ~/.curlrc'.

curlのSSL証明書の検証でエラーになった。
CA証明書が古いらしい。
新しいCA証明書を取得する。

CA証明書のアップデート

$ sudo mv /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt.bak # バックアップ
$ sudo curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

curlでまたSSLのエラーが出たので対処 - kanonjiの日記
cURL - Details on Server SSL Certificates
cURL - Extract CA Certs from Mozilla
再度sudoでRVMをインストール。

$ sudo bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
Downloading RVM from wayneeseguin branch stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  796k  100  796k    0     0   170k      0  0:00:04  0:00:04 --:--:--  340k
Installing RVM to /usr/local/rvm/
installing - /usr/local/rvm/man/man1/rvm.1 -
installing - /usr/local/rvm/man/man1/rvm.1.gz -
    Creating RVM system user group 'rvm'
# RVM:  Shell scripts enabling management of multiple ruby environments.
# RTFM: https://rvm.beginrescueend.com/
# HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net)
# Screencast: http://screencasts.org/episodes/how-to-use-rvm
# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'
Installation of RVM in /usr/local/rvm/ is complete.
# XXXXXXXXX,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne

sudoでマルチユーザ用にインストールすると、RVMは /usr/local/rvm にインストールされる。

sudoを使うのは、RVM自体のインストール時のみ。

以降の操作は、sudoを使わない。rvm installやgem install など、/usr/local/rvm 下に書き込む操作は、rvmグループに所属しているユーザで行う。(/usr/local/rvmのグループがrvmになっている。)
RVM: Ruby Version Manager - Troubleshooting RVM
RVM をマルチユーザー用にセットアップする: ひ日記
ユーザのグループにrvmを追加。

# usermod -a -G rvm <ユーザ名>

ユーザをrvmグループに追加したら、いったんログアウトしてから、rubyやgemをインストール。
sudo しない。

$ rvm install 1.9.3
$ rvm use 1.9.3
$ gem install rails

RVMのアップデートも、sudoを使わず、rvmsudoを使う。

$ rvmsudo rvm get latest