MacRuby on Rails #20110311-1
はじめに
MacRubyを普及させたい。その思いは日に日に高まっている。ではどうすればよ
いのか。Mac上でRubyを使っている人がMacRubyに移行するにはどうすればよい
のか。うん、それはRaiis。これが答え。
ということでMacRuby上でRailsが動くようにする。Railsには一切手を加えずに、
問題があればMacRubyを修正する。目標は7月。(当然、本業優先で)
高いハードルを乗り越えてこそハッカーへの道が開けるというもの。
Railsのインストール方法(cRuby編)
さて、ひさしくRailsをさわっていないため、まずはcRubyでのRailsのインストール方法
の確認から。アジャレイルズ本の第四版を参考に作業する。
※cRubyはtrunkを「19trunk」サフィックス付きでインストールしている。
$ sudo port upgrade sqlite3 $ ruby19trunk --version (以下、実行結果) ruby 1.9.3dev (2011-03-12 trunk 31096) [x86_64-darwin10.6.0] $ gem19trunk update --system (以下、実行結果) Latest version currently installed. Aborting. $ gem19trunk uninstall rubygems-update (以下、実行結果) ERROR: While executing gem ... (Gem::InstallError) cannot uninstall, check `gem list -d rubygems-update` $ gem19trunk install rails (以下、実行結果の一部。こんなに多くのgemをMacRubyで動かすことができるようにしなくてはいけないのか!?) Fetching: activesupport-3.0.5.gem (100%) Fetching: builder-2.1.2.gem (100%) Fetching: i18n-0.5.0.gem (100%) Fetching: activemodel-3.0.5.gem (100%) Fetching: rack-1.2.1.gem (100%) Fetching: rack-test-0.5.7.gem (100%) Fetching: rack-mount-0.6.13.gem (100%) Fetching: tzinfo-0.3.24.gem (100%) Fetching: abstract-1.0.0.gem (100%) Fetching: erubis-2.6.6.gem (100%) Fetching: actionpack-3.0.5.gem (100%) Fetching: arel-2.0.9.gem (100%) Fetching: activerecord-3.0.5.gem (100%) Fetching: activeresource-3.0.5.gem (100%) Fetching: mime-types-1.16.gem (100%) Fetching: polyglot-0.3.1.gem (100%) Fetching: treetop-1.4.9.gem (100%) Fetching: mail-2.2.15.gem (100%) Fetching: actionmailer-3.0.5.gem (100%) Fetching: thor-0.14.6.gem (100%) Fetching: railties-3.0.5.gem (100%) Fetching: bundler-1.0.10.gem (100%) Fetching: rails-3.0.5.gem (100%) $ gem19trunk install sqlite3-ruby
目標とするRails3アプリ(cRuby編)
MacRuby on Railsで目標とするRails3アプリをcRubyで作成する。といっても
Hello World並で、scaffoldしただけのブックマーク管理アプリ。
$ ruby19trunk -S rails new demo $ cd demo $ ruby19trunk -S rails generate scaffold Bookmark title:string description:text url:string $ rake19trunk db:migrate (以下、実行結果) (in /Users/kouji/work/ruby/work/demo) == CreateBookmarks: migrating ================================================ -- create_table(:bookmarks) -> 0.0019s == CreateBookmarks: migrated (0.0020s) ======================================= $ ruby19trunk -S rails server (以下、実行結果) => Booting WEBrick => Rails 3.0.5 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-03-12 01:26:26] INFO WEBrick 1.3.1 [2011-03-12 01:26:26] INFO ruby 1.9.3 (2011-03-12) [x86_64-darwin10.6.0] [2011-03-12 01:26:26] INFO WEBrick::HTTPServer#start: pid=79068 port=3000
MacRubyの更新
MacRubyは当然最新のソース版を使う。SubversionではなくGitのソースを利用している。
$ git branch -a (以下、実行結果) add-xcode-templates id/106 id/1069 * master ruby_deploy_with_share remotes/origin/HEAD -> origin/master remotes/origin/master $ rake $ sudo rake install $ macruby --version (以下、実行結果) MacRuby 0.10 (ruby 1.9.2) [universal-darwin10.0, x86_64]
Railsのインストール(MacRuby編)
怖いので以下の順で一つずつgemをインストールする。
- activesupport-3.0.5.gem
- builder-2.1.2.gem
- i18n-0.5.0.gem
- activemodel-3.0.5.gem
- rack-1.2.1.gem
- rack-test-0.5.7.gem
- rack-mount-0.6.13.gem
- tzinfo-0.3.24.gem
- abstract-1.0.0.gem
- erubis-2.6.6.gem
- actionpack-3.0.5.gem
- arel-2.0.9.gem
- activerecord-3.0.5.gem
- activeresource-3.0.5.gem
- mime-types-1.16.gem
- polyglot-0.3.1.gem
- treetop-1.4.9.gem
- mail-2.2.15.gem
- actionmailer-3.0.5.gem
- thor-0.14.6.gem
- railties-3.0.5.gem
- bundler-1.0.10.gem
- rails-3.0.5.gem
activesupport-3.0.5.gem
$ sudo macgem install --verbose activesupport --version=3.0.5 --no-ri --no-rdoc ... Successfully installed activesupport-3.0.5 1 gem installed
builder-2.1.2.gem
$ sudo macgem install --verbose builder --version=2.1.2 --no-ri --no-rdoc ... Successfully installed builder-2.1.2 1 gem installed
i18n-0.5.0.gem
$ sudo macgem install --verbose i18n --version=0.5.0 --no-ri --no-rdoc ... Successfully installed i18n-0.5.0 1 gem installed
ここまではうまくいっている。逆にうまく行き過ぎていて怖いくらい。
残りは一気にインストールしてみる。
$ sudo macgem install --verbose rails --no-ri --no-rdoc (以下、実行結果) Installing gem rack-1.2.1 ... WARNING: You are installing a new version of /usr/bin/rackup. This file already exists with a different shebang, possibly from a different ruby implementation or version. This operation may break the script. Do you still wish to continue? [yn] y (<- yを押してreturn。) ... Installing gem rake-0.8.7 ... WARNING: You are installing a new version of /usr/bin/rake. This file already exists with a different shebang, possibly from a different ruby implementation or version. This operation may break the script. Do you still wish to continue? [yn] y ... Installing gem rails-3.0.5 ... WARNING: You are installing a new version of /usr/bin/rails. This file already exists with a different shebang, possibly from a different ruby implementation or version. This operation may break the script. Do you still wish to continue? [yn] y
これでRailsがインストールできた。
sqlite3-rubyのインストール
それではsqlite3のrubyバインディングをインストールする。
$ sudo macgem install --verbose sqlite3-ruby --no-ri --no-rdoc (以下、実行結果) ... Installing gem sqlite3-ruby-1.3.3 ... Successfully installed sqlite3-1.3.3 Successfully installed sqlite3-ruby-1.3.3 2 gems installed
これもうまくできた。なんか怖い。
MacRuby on Rails
$ macruby -S rails new demo (以下、実行結果) create create README create Rakefile ... create vendor/plugins create vendor/plugins/.gitkeep $ macruby -S rails generate scaffold Bookmark title:string description:text url:string (以下、実行結果) Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3434. zsh: abort macruby -S rails generate scaffold Bookmark title:string description:text
そうこなくっちゃ。動かなくて当然ですからw。そうでないと私の修行にならない。
Webrickはどうだろう。
$ macruby -S rails server (以下、実行結果) Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3434. zsh: abort macruby -S rails server
やはりだめか。
続きは後日。