AWS(Amazon Linux AMI)でRails動かそうとして「io/console (LoadError)」エラーでハマった話

AWSのEC2でクラウドサーバ(Amazon Linux AMI)を確保していたはいいが、長くほったからかしていたので、ちょっとそこでRailsを動かしてみようと思った。


最初から張り切ってApache+Passengerを組み込んでみたはいいが、

$ passenger-install-apache2-module

で、

Your compiler failed with the exit status 4. This probably means that it ran out of memory. To solve this problem, try increasing your swap space: 

というエラーにぶち当たり断念。
t1.microじゃちょっと無理なんですね。

とりあえずWEBrickで、作っては動かし、作っては動かし、そして問題発生。

$ rails generate model order
Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance.
/usr/local/share/ruby/gems/2.0/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- io/console (LoadError)

いきなりmodelの作成からできやしない。

ぐぐれば、

$ gem install io-console

しなさいということなので、

Building native extensions.  This could take a while...
Successfully installed io-console-0.4.2
Parsing documentation for io-console-0.4.2
Done installing documentation for io-console after 0 seconds
1 gem installed

しかし、やはり同じエラー。

ふと、

$ vi Gemfile

で、
一番下に

gem 'io-console'

追記したら

$ rails generate model order
Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance.
      invoke  active_record
      create    db/migrate/20140814135616_create_orders.rb
      create    app/models/order.rb
      invoke    test_unit
      create      test/models/order_test.rb
      create      test/fixtures/orders.yml

これでようやく解決。

うーん、そういうことなんですか。

それにしてもRailsって、バージョン変わると色々様変わりしてしまうんですね。
Rails 4.0だと、巷にあふれる1.x向けや2.x向けのコードやコマンドが色々使えなくて
「え、script/plugin install じゃダメで、rails plugin install でもダメで、結局gem installするしかないってことですか」とか、くだらないところで時間を無駄にしてしまう。

こういう所が好かれないわけですね彼。