一开始,我只是想找一个当前博客程序的替代品。而我发现了Typo这样令人激动的基于RoR的开源博客程序,跃跃欲试想把Typo运行在IIS + IronRuby + IronRuby.Rack上。
Typo 5.5依赖于Ruby 1.8.7 + Rails 2.3.8。IronRuby 1.0基本兼容Ruby 1.8.6,我想问题应该不大。
XP系统,一个崭新的IronRuby 1.0安装版。安装Rails:
igem install rails -v 2.3.8
为了方便,打算使用SQLite数据库,在IronRuby下,sqlite3-ruby这样的gem是不能用的,需要用sqlite3-ironruby这样的替代方案。早在这一步我就应该注意到一些问题了,但我当时没有在乎:
igem install sqlite3-ironruby
尝试了几次RubyGems直接安装Typo都失败了,我自己从ZIP里解压了一份Typo 5.5。
在config目录下创建database.yml:
production: adapter: sqlite3 database: db/typo.db timeout: 5000
然后执行rake操作DB:
rake db:create RAILS_ENV=production rake db:migrate RAILS_ENV=production
问题来了,rake报告有一系列需要依赖的gem没有安装。那就让它装:
rake gems:install
找不到gem命令,没问题,把igem.bat复制一份命名为gem.bat。
再执行,大部分安装都成功了,除了json、bluecloth 2.0.5和RedCloth 4.2.2。报错都在编译Native Extension上。
去RubyForge上找齐了这三个的Windows预编译版本,再用RubyGems单独从本地安装,成功。
再尝试之前的DB Migrate操作,rake却依然报告找不到两个gem依赖:
Missing these required gems: bluecloth ~> 2.0.5 RedCloth ~> 4.2.2
经过各种google,终于在IronRuby官网(Documentation –> Real Ruby Applications –> RubyGems –> Native gems)上得知了一个噩耗:
Native extensions are not supported by IronRuby. Currently, there is no known way of avoiding native gems. When you install gems, you will have to manually exclude gems with win32 in the name.
本来就是希望跨平台采用了IronRuby,结果这又出现平台依赖的要素了。这不得不令我质疑之前自己对Ruby跨平台性的认识。
现在的疑问是Native Extension在Ruby开源界占有多大比重?IronRuby在缺少此类支持的情况下,能为我带来多少好处?
“IronRuby+IIS+Typo的尝试和对Ruby跨平台性的质疑”上的4条回复
祝贺一下更换主机空间,速度终于正常了。
再次测试评论。
nice.
耐心,时间和金钱可以征服一切