[Ruby] RVM環境での sudo は rvmsudo を使う

RVM 上に構築した Ruby on Rails で WEBrick サーバを 443 Port 指定で起動するために sudo で実行したところエラーが発生して、解決した話をご紹介します。

■ エラー内容

$ sudo rails s -p 443
Password:
/Users/your_username/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find rails (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
	from /Users/your_username/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
	from /Users/your_username/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1208:in `gem'
	from /Users/your_username/.rvm/gems/ruby-1.9.2-p290@mygemset/bin/rails:18:in `<main>'

原因は、Rails の開発環境を RVM で構築していたせいでした。

rvm 環境上で ruby や rails コマンドで sudo が必要な場合は rvmsudo を使わないといけないみたいです。

$ rvmsudo rails s -p 443
Password:
=> Booting WEBrick
=> Rails 3.1.0 application starting in development on http://0.0.0.0:443
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-02-23 23:58:43] INFO  WEBrick 1.3.1
[2012-02-23 23:58:43] INFO  ruby 1.9.2 (2011-07-09) [x86_64-darwin11.3.0]
[2012-02-23 23:58:43] INFO  WEBrick::HTTPServer#start: pid=4649 port=443

rvmsudo でやったら上手くいきました。

以上、RVM 上に構築した Ruby on Rails で WEBrick サーバを 443 Port 指定で起動するために rvmsudo した、現場からお送りしました。

参考情報