さとうようぞうの技術メモ

技術的な内容はこっちに書こうかなぁ、と思ったので。

rvmsudo rails s -p 80 しようとしてエラー

rails を port 80 で起動しようと rvmsudo を使ったら以下のエラーが出た.

rvmsudo rails server -p 80
Warning: can not check `/etc/sudoers` for `secure_path`, falling back to call via `/usr/bin/env`, this breaks rules from `/etc/sudoers`. export rvmsudo_secure_path=1 to avoid the warning.Password:
/Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/mysql2-0.3.11/lib/mysql2.rb:9:in `require': dlopen(/Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
  Referenced from: /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/mysql2-0.3.11/lib/mysql2.rb:9:in `<top (required)>'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `require'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `each'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `block in require'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `each'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `require'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler.rb:119:in `require'
        from /Users/yz/Documents/work/gamepot/AeriaGames/DG/repo/dg2_code/dg2-server/config/application.rb:7:in `<top (required)>'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/railties-3.2.11/lib/rails/commands.rb:53:in `require'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/railties-3.2.11/lib/rails/commands.rb:53:in `block in <top (required)>'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/railties-3.2.11/lib/rails/commands.rb:50:in `tap'
        from /Users/yz/.rvm/gems/ruby-1.9.3-p194@dg2/gems/railties-3.2.11/lib/rails/commands.rb:50:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

ぐぐったら Stack Overflow に解決策が書いてあったので、その通りに実行。

 

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


再度実行。

rvmsudo rails server -p 80
Warning: can not check `/etc/sudoers` for `secure_path`, falling back to call via `/usr/bin/env`, this breaks rules from `/etc/sudoers`. export rvmsudo_secure_path=1 to avoid the warning.WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.3
=> Booting WEBrick
=> Rails 3.2.11 application starting in development on http://0.0.0.0:80
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-03-19 11:05:23] INFO  WEBrick 1.3.1
[2013-03-19 11:05:23] INFO  ruby 1.9.3 (2012-04-20) [x86_64-darwin11.4.0]
[2013-03-19 11:05:23] INFO  WEBrick::HTTPServer#start: pid=13357 port=80

Warning は出るけど、80で起動できた。