首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby装配

2012-12-19 
ruby安装根据编译安装时的c编译环境,ruby被编译成对应的平台版本,如默认无标识的unix(cc、gcc)、freebsd、min

ruby安装
根据编译安装时的c编译环境,ruby被编译成对应的平台版本,如默认无标识的unix(cc、gcc)、freebsd、mingw32、cygwin、mswin32-60(vc6.0)、mswin32-100(vc10.0)、darwin-11(Mac)、java

一些用到c的rubygem,有的被做成多个平台版本,有的只有默认版本,安装和用要注意平台版本匹配

mingw gcc可以编译一些含POSIX FUNCTION的c代码,可在mingw下编译安装ruby

./configure --enable-rubygems --disable-install-doc --disable-install-rdoc --disable-install-capimake && make install


也可以用rubyinstaller.org做好的安装版。
http://rubyforge.org/frs/download.php/75465/rubyinstaller-1.9.3-p125.exe

win32版的ruby要靠vc++编译出来,要注意:用vc10.0编译出来的ruby,和vc6.0不兼容!rubygems.org上有提供win32版的gem,标记的都是mswin32-60(比如enventmachine、nokogiri),mswin32-100的ruby装了它们也用不了。为了能用就须用vc6.0编译。

用vc6.0编译ruby mswin32

http://www.downbank.cn/soft/10/104/2006/20060928974.htm

进到光盘里面把其中4个目录拷到C盘:
VC6EN\COMMON\MSDEV98\BINVC6EN\VC98\BINVC6EN\VC98\INCLUDEVC6EN\VC98\LIB


加环境变量
# PathC:\VC6EN\COMMON\MSDEV98\BIN;C:\VC6EN\VC98\BIN;%path%;# includeC:\VC6EN\VC98\INCLUDE# libC:\VC6EN\VC98\LIB


下载ruby源码 http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2

编译

C:cd \rubywin32\configurenmake & nmake test & nmake install


一切顺利ruby默认安装在c:\usr

%path%;C:\usr\bin;


安装扩展

psych gem命令要求

http://pyyaml.org/wiki/LibYAML

vitualstudio打开C:\yaml-0.1.4\win32\vs2008\libyaml.sln生成yaml和yamldll项目
C:\yaml-0.1.4\win32\vs2008\Output\Debug\lib\DLL;%path%C:\yaml-0.1.4\win32\vs2008\Output\Debug\lib\DLL;%lib%C:\yaml-0.1.4\include;%include%cd %src%\ext\psych && ruby extconf.rb && nmake && nmake install


zlib gem install命令要求

http://zlib.net/zlib125-dll.zip

C:\zlib125-dll;%path%cd %src%\ext\zlib && ruby extconf.rb --with-zlib-dir="C:\zlib125-dll" && nmake && nmake install


openssl rack(web server)和debug要求

下载安装Win32OpenSSL http://www.slproweb.com/download/Win32OpenSSL-0_9_8r.exe
cd ext/openssl && ruby extconf.rb --with-openssl-dir="C:\openssl" && nmake && nmake install


在cmd里安装gem
gem i -l rubygems-update-x.x.xx.gemupdate_rubygems


# sublime 比 rubymine 好用多了70414-12042010 00002VG0BeoZbwmNAMNCx5E882rBEM Ysn1P!e"s830EDlHcWg8gmqYVkvZMo Injf4yqlO1yy"82NiwNzyYInoT7AiX


非windows平台

不推荐rvm,复杂设计,一堆bug

benchmark

ruby benchmark suite
https://github.com/acangiano/ruby-benchmark-suite

ruby版本都是1.9.3

把一个n长的字符串,存入一个数组x遍,遍历数组正则匹配。
require 'benchmark'puts RUBY_PLATFORMsum = 010.times do  bm = Benchmark.realtime do    arr = []    20000.times do      arr << "ruby platform vs " * 1000     end    arr.each do |a|      puts 'true' if a =~ /unknown/    end  end  puts "#{"%0.3f" % bm}s"    sum += bmendputs "Average:#{"%0.3f" % (sum / 10)}"


家里电脑windows系统,mingw32 vs i686-linux(in virtualbox) vs i386-freebsd9.0(in virtualbox)

i386-mingw32Average:0.927i686-linuxAverage:0.804i386-freebsd9.0Average:3.872


linux总是最快的,字符串短的情况下freebsd和linux差不多,字符串一长freebsd就慢了,不知道是不是虚拟机的关系。

公司电脑windows系统,mswin32 vs mingw32 vs cygwin
i386-mswin32Average:0.671i386-mingw32Average:0.633i386-cygwinAverage:0.339


cygwin是较完整的unix环境,原则上比mingw慢,执行这个脚本竟然比mingw快。

对象存取
require 'benchmark'class Foo  def bar    true  endendputs RUBY_PLATFORMn = 1_000_000Benchmark.bm(30) do | b |  b.report "instance_variable_set" do    n.times do      instance = Foo.new      instance.instance_variable_set(:@baz, Hash.new)    end  end  b.report "instance_eval" do    n.times do      instance = Foo.new      instance.instance_eval do        @baz = Hash.new      end    end  endend


i386-mingw32                                     user     system      total        realinstance_variable_set            1.295000   0.000000   1.295000 (  1.290073)instance_eval                    2.637000   0.000000   2.637000 (  2.629151)i386-cygwin                                     user     system      total        realinstance_variable_set            1.622000   0.000000   1.622000 (  1.622093)instance_eval                    3.994000   0.000000   3.994000 (  4.002229)


mingw32 比 cygwin 快
2 楼 hudou1986 2012-01-28   希望出一个mingw32编译ruby的教程

热点排行