iriya-ufo's blog

Curiosity was simply the first derivative of knowledge.

Rbenv で Mac OS X に Ruby 2.0.0 をインストールする

rvm はクールじゃないので rbenv を使って Ruby をインストールします。

事前準備

はじめに『Ruby on Rails 3.2 を Mac OS X にインストールする手順をかなり丁寧に説明してみました』を参考に準備をしておきます。 このサイトは Rails のインストールについてですが Xcode, Homebrew など初歩からかなり丁寧に書いているのでオススメです。

Ruby のインストール

準備が出来たら以下コマンドを順次行います。

$ brew update
$ brew upgrade ruby-build
$ CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 2.0.0-dev

デフォルト使用設定

デフォルトで使用する Ruby のバージョンを決定します。

$ rbenv global VERSION_NUMBER
$ rbenv versions # 確認

Ruby や Gem のパスを通す

rbenv の場合、インストールした Gem などを使う前に $ rbenv rehash としてパスを通してやる必要があります。 ただ毎回これを行うのは面倒かつ忘れてしまうので、自動化します。 rbenv-rehash という Gem をインストールするのも一つの方法ですが、シェルにラッパーを書いてあげるのがいいでしょう。

rbenv で gem を使った時に rbenv rehash しなくて良くする』が大変参考になります。

Rails のアップデート

Ruby on Rails の 3.2.9 に脆弱性が発見されたため 3.2.11 にアップデートした際の方法を記す。

Gem のアップデート

$ sudo gem update --system
$ gem -v
1.8.24

Rails のアップデート

$ sudo gem update rails
$ rails -v
Rails 3.2.11

古い Rails をアンインストール

古いバージョンの Rails を削除します。新しいバージョンの Rails で動作確認していないなら、念の為に残しておいたほうがよいでしょう。

$ sudo gem uninstall rails
Select gem to uninstall:
1. rails-3.2.9
2. rails-3.2.11
3. All versions
> 1

bundler のアップデート

$ sudo gem update bundler

既存のプロジェクトのアップデート

既存のプロジェクトとの差分を確認するため、テストプロジェクトを作成します。

$ rails new app_test

差分確認

既存アプリと新しく作ったアプリの Gemfile の diff を取って正しく編集する。

1
2
3
4
5
6
7
8
9
$ diff app_test/Gemfile app_rails/Gemfile
3c3
< gem 'rails', '3.2.11'
---
> gem 'rails', '3.2.9'
18c18
<   # gem 'therubyracer', :platforms => :ruby
---
>   gem 'therubyracer', '0.10.2'

bundle のアップデート

$ bundle update

ビルドツール rake でアップデート

念の為、 config のバックアップを取ってから実行します。

$ cp -r config config_old
$ rake rails:update

設定ファイルのマージ

以下の設定ファイルを比較して編集する。

  • config/routes.rb
  • config/application.rb
  • config/environment.rb
  • config/initializers/serect_token.rb

環境によっては他にも編集すべきファイルがあるかと思います。以上で Rails のアップデートが終了します。

SSH 接続が切れた後でもバックグラウンドジョブを継続させる方法

サーバーに SSH でログインしている時に、長い時間のかかるプロセスを起動しちゃうと、ふと SSH 接続が切れたりしたらそのプロセスも道連れになって困ります。 また普通にバックグラウンドジョブとして動かしてもだめです。 以下のように nohup シグナル送ってプロセスとして動かし続けてあげたら大丈夫です。

$ nohup command [arg...] &

詳しくは『ログアウトしてもバックグラウンド ジョブを継続する方法』を参照してください。 さらに詳しく知りたい場合は『なぜnohupをバックグランドジョブとして起動するのが定番なのか?』を参照するとよいです。

SSH ログインが遅い問題を解決

SSH でログインそのものはできるが非常に時間がかかるという場合、DNS の設定がよろしくない場合があります。 そんな時は、sshd_config に以下を追記してみてください。

UseDNS no

Ubuntu で DVD リッピング

Ubuntu で DVD をリッピングする方法はいくつかあります。

  • k9copy
  • dvd::rip
  • wine で DVD Decrypter

私の環境ではいずれもうまくいきませんでした。最終的にコマンドラインから丸ごと iso イメージとして取り出す方法がうまくいったので書いておきます。環境は Ubuntu 12.04 LTS です。

まずデバイスファイルを調べます。

$ wodim --devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0  dev='/dev/sg1'  rwrw-- : 'Optiarc' 'DVD RW AD-7710H'
-------------------------------------------------------------------------

マウントされていれば外しておきます。

 $ sudo umount /dev/sg1

iso ファイルを作成します。

$ readom dev=/dev/sg1 f=filename.iso

iso ファイルが作成されているので後はそれを VLC などを使って再生すると観られます。