`padrino g` で activesupport のバージョンエラーが出る


__Padrino 0.11.4__

チュートリアルの最初、プロジェクトの作成でいきなりずっこけてしまった。
* http://www.padrinorb.com/guides/blog-tutorial

<pre>
$ padrino g project sample_blog -t shoulda -e haml -c sass -s jquery -d activerecord -b
</pre>

<pre>
/Users/tmd45/.rbenv/versions/1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:2064:in `raise_if_conflicts': Unable to activate padrino-core-0.11.4, because activesupport-4.0.0 conflicts with activesupport (< 4.0, >= 3.1) (Gem::LoadError)
...
</pre>

別途 Rails 4 をインストールしてたことで gem に activesupport 4.0 が入ってたのだけど、Padrino が、自分が対応してるバージョン 3.x じゃなくて 4.0 の方を見に行っちゃってるっぽい。

<pre>
$ gem list -l
</pre>

<pre>
...
activesupport (4.0.0, 3.2.16, 3.2.13)
...
</pre>

すでに issue は対応されてて、 __Padrino 0.12__ からは activesupport 4 も使えるようになるらしい。
* https://github.com/padrino/padrino-framework/issues/1450
* https://github.com/padrino/padrino-framework/pull/1414

## 対策

gem のソースに手を入れてもいいのだけど、ひとまず Gemfile に自分でバージョン書いて bundle を使う。

```Gemfile
source 'https://rubygems.org'

gem 'padrino', '0.11.4'
gem 'activesupport', '3.2.16'
```

<pre>
$ bundle install
</pre>

<pre>
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Enter your password to install the bundled RubyGems to your system:
Using i18n (0.6.9)
Installing multi_json (1.8.4)
Using activesupport (3.2.16)
Using bundler (1.3.5)
Using rack (1.5.2)
Using url_mount (0.2.1)
Using http_router (0.11.0)
Installing mime-types (1.25.1)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Installing rack-protection (1.5.2)
Using tilt (1.4.1)
Using sinatra (1.4.4)
Using thor (0.17.0)
Using padrino-core (0.11.4)
Using padrino-helpers (0.11.4)
Using padrino-admin (0.11.4)
Using padrino-cache (0.11.4)
Using padrino-gen (0.11.4)
Using padrino-mailer (0.11.4)
Using padrino (0.11.4)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
</pre>

んで、`bundle exec` で padrino を使う。

<pre>
$ bundle exec padrino g project sample_blog -t shoulda -e haml -c sass -s jquery -d activerecord -b
</pre>

<pre>
      create
      create  .gitignore
      create  config.ru
      create  config/apps.rb
      create  config/boot.rb
      create  public/favicon.ico
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  tmp
      create  .components
      create  app
      create  app/app.rb
      create  app/controllers
      create  app/helpers
      create  app/views
      create  app/views/layouts
      create  Gemfile
      create  Rakefile
    applying  activerecord (orm)...
       apply  orms/activerecord
      insert  Gemfile
      insert  Gemfile
      insert  app/app.rb
      create  config/database.rb
    applying  shoulda (test)...
       apply  tests/shoulda
      insert  Gemfile
      insert  Gemfile
      create  test/test_config.rb
      create  test/test.rake
    skipping  mock component...
    applying  jquery (script)...
       apply  scripts/jquery
      create  public/javascripts/jquery.js
      create  public/javascripts/jquery-ujs.js
      create  public/javascripts/application.js
    applying  haml (renderer)...
       apply  renderers/haml
      insert  Gemfile
    applying  sass (stylesheet)...
       apply  stylesheets/sass
      insert  Gemfile
      insert  app/app.rb
      create  lib/sass_initializer.rb
      create  app/stylesheets
   identical  .components
       force  .components
       force  .components
Bundling application dependencies using bundler...
         run  bundle install from "."
Could not find gem 'shoulda (>= 0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

=================================================================
sample_blog is ready for development!
=================================================================
$ cd ./sample_blog
=================================================================

</pre>

ぬ。プロジェクトルートのつもりで作ったディレクトリの、さらに内側にプロジェクトができちゃった。
まぁいいや。

## チュートリアルを進めてみる

チュートリアル通りに `app/app.rb` にコードを追加。
チュートリアルのコードと generate されたコードがちょびっと違う。バージョンアップで変わったのかな。

よく見たら `shoulda` とか一部の gem が無いと怒られている（普段使ってない）ので随時 Gemfile に追加、`bundle install/update` した。
あとでちゃんとプロジェクトを genarate するときには、自分が使いたいものを使うから適当に。

管理画面機能の追加も行って、いざサーバ起動。

<pre>
$ bundle exec padrino start
</pre>

別プロジェクトで port 3000 を使ってたので怒られた（当たり前である）。
起動時に port 番号を指定できる（`--help` で利用可能なオプションを確認できる）。

<pre>
$ bundle exec padrino start -p 3001
</pre>

<pre>
=> Padrino/0.11.4 has taken the stage development at http://127.0.0.1:3001
[2014-01-31 11:21:41] INFO  WEBrick 1.3.1
[2014-01-31 11:21:41] INFO  ruby 1.9.3 (2013-06-27) [x86_64-darwin12.4.0]
[2014-01-31 11:21:41] INFO  WEBrick::HTTPServer#start: pid=48236 port=3001
  DEBUG -       GET (0.0159s) / - 200 OK
  DEBUG -       GET (0.0010s) / - 200 OK
  DEBUG -       GET (0.0032s) /about_us - 200 OK
</pre>

うごいたー。