Displaying articles with tag

更新了一下脚本

Posted by leeseon, Sun Jul 06 15:35:00 UTC 2008

自从上回 之后,ruby、rails与gems也都开始更新了,于是也更新了一下安装脚本,如下:

  • mkdir ~/.gems
  • echo ‘export GEM_HOME=”$HOME/.gems”’ >> .bash_profile
  • echo ‘export GEM_PATH=”$GEM_HOME:/usr/lib/ruby/gems/1.8”’ >> .bash_profile
  • echo ‘export PATH=”$HOME/.gems/bin:$PATH”’ >> .bash_profile
  • echo ‘export PATH=”$HOME/local/bin:$PATH”’ >> .bash_profile
  • . ~/.bash_profile
  • echo $PATH
  • touch ~/.gemrc
  • echo gemhome:/home/$(whoami)/.gems >> ~/.gemrc
  • echo gempath: >> ~/.gemrc
  • echo -/home/$(whoami)/.gems >> ~/.gemrc
  • echo -/usr/lib/ruby/gems/1.8 >> ~/.gemrc
  • # setup directories
  • mkdir -p ~/local/usr/src/ruby
  • cd ~/local/usr/src/ruby
  • # Install readline
  • wget ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
  • tar zxvf readline-5.2.tar.gz
  • cd readline-5.2
  • ./configure—prefix=$HOME/local
  • make
  • make install
  • cd ..
  • # install ruby
  • wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2
  • tar jxvf ruby-1.8.7-p22.tar.bz2
  • cd ruby-1.8.7-p22
  • ./configure—prefix=$HOME/local—with-readline-dir=$HOME/local/
  • make
  • make install
  • cd ..
  • # fix path
  • export PATH=$HOME/local/bin:$PATH
  • # get rubygems
  • wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
  • tar zxvf rubygems-1.2.0.tgz
  • cd rubygems-1.2.0
  • $HOME/local/bin/ruby setup.rb config—prefix=$HOME/local
  • $HOME/local/bin/ruby setup.rb setup
  • $HOME/local/bin/ruby setup.rb install
  • cd ..
  • # Install RAILS
  • gem install rails
  • # Install FastCGI
  • curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
  • tar xzvf fcgi-2.4.0.tar.gz
  • cd fcgi-2.4.0
  • ./configure—prefix=$HOME/local
  • make
  • make install
  • cd ..
  • # Install FastCGI & MySQL gem packages
  • gem install fcgi——with-fcgi-dir=$HOME/local
  • gem install mysql——with-mysql-config
  • # gem update

关于脚本的解释可以看以前 的说明,这次仅仅只是版本上的更新而已,不再多做说明

文件依然放在http://leeseon.com/private/allinstall.sh

也同样可以使用


curl http://leeseon.com/private/allinstall.sh | sh

来执行,无它、、、

0 comments | Filed Under: | Tags:

Rails/Ruby社区越来越快了

Posted by leeseon, Sun Jun 22 17:19:00 UTC 2008

Rails在6.1号就已经发布2.1了,这个号称参与人数最多,代码更改行数最多的版本,就这么漫不经心地来了。最近gems也发布1.2了,而且中文版本的《what’s new in rails 2.1》也基本上在网络上翻译好了,rails的社区参与度与活跃度也最来最高了,这样的rails/ruby社区怎能不越来越快?

最近依然在忙碌中度过,上来写写博文只能算是应个景儿,有点对不起自己了:(

0 comments | Filed Under: | Tags:

running on rails-----在铁轨上奔跑速度自然就会快:P

Posted by leeseon, Thu Jun 05 15:53:00 UTC 2008

最近一直忙于工作,居然有两周没有写blog了,不过也不是完全没有时间写,只是因为实在是没有什么时间来实践rails上的一些新东东,觉得言之无物:(

不过ruby/rails社区最近却是如大事连连:先是rails 2.1的发布,还有就是ironruby在rubinius之后也宣布可以运行rails了,这个所有ruby实现都视之为重要目标的里程碑。

一旦运行上了轨道,后面自然是一发而不可收拾噢,虽然我对ironruby的兴趣缺缺的说

只是偶然发现ruby on rails的这个名字真的很有趣,以至于我自己能生造出Running On Rails这样古怪的半通不通的双关来,算是玩笑吧:P

0 comments | Filed Under: | Tags:

在DreamHost上安装Ruby、Gems与Rails的最简单方法之续

Posted by leeseon, Sat May 10 18:03:00 UTC 2008

昨天只是泛泛谈了一下在DreamHost上安装Ruby、Gems与Rails的最简单方法 似乎有点 意犹未尽,决定写个续集,呵呵:)

好吧从哪儿说起呢?嗯,看我注释过的脚本吧,注释应该已经算是说得比较明白了,无它!

  • #修改.bash_profile,设置环境变量GEM_HOME与GEM_PATH
  • #并将~/.gems/bin与~/local/bin加入到查找路径的前端
  • echo  'export GEM_HOME="$HOME/.gems"'  >> .bash_profile
  • echo  'export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"'  >> .bash_profile
  • echo  'export PATH="$HOME/.gems/bin:$PATH"'  >> .bash_profile
  • echo  'export PATH="$HOME/local/bin:$PATH"'  >> .bash_profile
  •   
  • #执行.bash_profile使变量生效
  • . ~/.bash_profile
  • #显示PATH变量,仅仅只是为了测试
  • echo $PATH
  •   
  • #生成gems所需的目录及.gemrc文件,并填充相应内容
  • mkdir ~/.gems
  • touch ~/.gemrc
  • echo gemhome:/home/$(whoami)/.gems >> ~/.gemrc
  • echo gempath: >> ~/.gemrc
  • echo -/home/$(whoami)/.gems >> ~/.gemrc
  • echo -/usr/lib/ruby/gems/1.8 >> ~/.gemrc
  •   
  • # setup directories
  • mkdir -p ~/local/usr/src/ruby
  • cd ~/local/usr/src/ruby
  •   
  • # Install readline
  • wget ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
  • tar zxvf readline-5.2.tar.gz
  • cd readline-5.2
  • ./configure --prefix=$HOME/local
  • make
  • make install
  • cd ..
  •   
  • # install ruby
  • wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz
  • tar zxvf ruby-1.8.6-p114.tar.gz
  • cd ruby-1.8.6-p114
  • ./configure --prefix=$HOME/local --with-readline-dir=$HOME/local/
  • make
  • make install
  • cd ..
  •   
  • # fix path
  • export PATH=$HOME/local/bin:$PATH
  •   
  • # get rubygems
  • wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
  • tar zxvf rubygems- 1.1.1.tgz
  • cd rubygems-1.1.1
  • $HOME/local/bin/ruby setup.rb config --prefix=$HOME/local
  • $HOME/local/bin/ruby setup.rb setup
  • $HOME/local/bin/ruby setup.rb install
  • cd ..
  •   
  • # Install RAILS
  • gem install rails
  •   
  • # Install FastCGI
  • curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
  • tar xzvf fcgi-2.4.0.tar.gz
  • cd fcgi-2.4.0
  • ./configure --prefix=$HOME/local
  • make
  • make install
  • cd ..
  •   
  • # Install FastCGI & MySQL gem packages
  • gem install fcgi -- --with-fcgi-dir=$HOME/local
  • gem install mysql -- --with-mysql-config

0 comments | Filed Under: | Tags:

在DreamHost上安装Ruby、Gems与Rails的最简单方法

Posted by leeseon, Fri May 09 21:47:00 UTC 2008

其实这篇帖子是一年前就应该写的,当时在DreamHost 上折腾了几天才搞定mephisto,花了两周才搞定depot例子加上gettext汉化的过程。不过人总是好了伤疤忘了痛,而且事后想想也觉得没有什么可说,就不了了之了。而且如今DreamHost也开始进行mod_rails的beta测试了,想来现在才写是有点不太合时宜噢。不过最近又在DreamHost上部署了几个rails应用,不免有也心烦,于是有了旧事重提,朝花夕拾一下的想法。

不过有一点要声明就是,其实在DreamHost上安装自己的gems其实是并不需要自己安装Ruby的,这两个过程是可以分开的,不过可能是我变态,总喜新厌旧,而且又狂有控制欲,那么大的空间为什么不装一个,而且还可以为ruby打上GC的补丁呢(其实也就是一想,补丁嘛我也没有打过:P,因为现在还用不上的)。

Ruby装起来很简单,wget一个,解包,编译,安装,将之放入你的路径中就好,不过最好是先编译一份readline为好,以免以后执行script/console会出错,这个不多说,能google出一堆。

Gems嘛,则需要你建一个本地的安装目录,通常为.gems,并告诉gems知道这个目录的存在,为了这一点你就需要有~目录下生成一个.gemrc的文件,并将你的目录告诉它就好了。当然你也可以如我一样,编译一份最新的rubygems,并将之放入你的查找路径之中就好。

然后你还需要修改rails的disptch.fcgi文件,让它知道你的ruby与gems目录所在就好。当然其实你也可以使用GemsOnRails 将所有用到的gems放在vendor下,这个就自然不需要自己安装Gems了(rmagick之类的除外)。

好了,言归正传吧,何以言之我的方法最简单呢?其实是受了tobi 的启发,将所有的安装命令写成一个脚本然后直接执行它就好。不过与他不同的一点是,我在脚本上增加了GEM_HOME与PATH之类的添加与.gemrc文件的生成,真的是一站式搞定。如果你不太懂linux,那你有福了,当然如果你是linux高手,那就让我怡笑大方吧:(

其实这条命令就是


curl http://leeseon.com/private/allinstall.sh | sh

而已,还算简单吧,嘿嘿

不过在这之后你的dispatch.fcgi文件还需要将第一行改成,(dispatch.rb也最好改一下,虽然我发现不改也行)


#!/home/your user name/local/bin/ruby

并在require语名之前加上


ENV['RAILS_ENV'] = 'production'
ENV["GEM_HOME"]="/home/your user name/.gems" 
ENV["GEM_PATH"]="/home/your user name/.gems:/usr/lib/ruby/gems/1.8" 

OK,万事搞定,试试吧!

注:我安装的是现在最新版本的ruby-1.8.6-p114与rubygems-1.1.1 这个以后会不定时的更新为最新版本

0 comments | Filed Under: | Tags:

NT域内网中的gems更新

Posted by leeseon, Tue Apr 15 22:00:00 UTC 2008

如果你如我一样,不是在一家以纯Mac或Linux/Unix环境下的公司上班,而且很不幸通过在基于NT域之上的代理上网的话,你就可能遇到gem更新的问题

虽然你总可以通过浏览器下载所有的gem然后一个一个的手动安装,但不管怎样,这都是一个很没有效率的事,不是吗?

当然,你自然是可以找到RubyGems上的FAQ中的提示 通过一个基于python的称之为APServer的工具再建一个Basic authentication代理,然后基于它搞定这一切。

可惜的是,你可能会遇到如我一般的问题,http://apserver.sf.net 不能打开,你现在只能看到一堆无用的错误提示,晕死:(

不过幸好我经过一番不懈的努力(本来想寻找其它的解决方案),居然发现了另一个url是指向同一个工程的:http://ntlmaps.sourceforge.net/ 两者只是名字不同而已:)

不过更有趣的事自然是在后头,有人更进一步的通过APServer与Tor及SocksCap32组建了一个完整的上网环境,使得在办公室里使用emule都成为了可能,呵呵,有兴趣的可以看一下这里

不过一般我是不会在办公室里使用emule的,毕竟这种lowID是比较慢的,不过知道有这种可能也是不错的

0 comments | Filed Under: | Tags:

最近ruby二三事

Posted by leeseon, Mon Apr 14 14:11:00 UTC 2008

最近这两周,ruby社区接连有几件大事发生:

当仁不让最火爆的自然是GitHub 的正式上线,DHH称之为一个”killer application”.

此外,就因为是这两天众望所归的mod_rails 的realse. 虽然robbin对它在VPS上的前景不太看好 ,但是在dreamhost之类的共享主机上倒是前途远大,而且apache老矣的诊断我还觉得有点为时过早。

与这两件相比JRuby1.1与HotRuby 及RubyJS之类的新闻都不那么让人激动了。

总得来说,ruby现在越来越开始走向工业化的前端了,rails与git的结合让我看到一个新的开源社区的前景。mod_rails则开始着手于,一开始让人诟病的rails的部署不如PHP简单明了的问题。而且现在的ruby也越来越VM化了。

PS:今天有点头痛,词不达意,先下,再写

0 comments | Filed Under: | Tags:

Ruby 及 K-combinator

Posted by leeseon, Mon Mar 24 15:33:00 UTC 2008

闲读mephisto的代码,发现其中N多地方用到returning,看着很怪,难道又多出了一个关键字?

grep一下,自然不是,这个是源自active_support\core_ext\object\misc.rb:

Class Object
  def returning(value)
    yield(value)
    value
  end
end

粗看之下,极其简单无甚好说,但是为什么会这样用?又是一个idiom?

google之,却发现绝不简单,正如它的注释所说这是一个“ A Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.”

这里 发现了我心不孤,也有人大大感吧了一番了Brockman的天才想法。

本人词拙,还是半译半抄Jamis的解释吧:

Basically, the K combinator is a function of two arguments, that merely returns the first argument. The second argument is useful only for the side-effects it has on the first argument. The implementation of this in Ruby is beautifully succinct:

简单的说, K组合子是一个有两个参数的函数,它仅仅是直接返回第一个参数。而第二个参数唯一个作用就是对第一个参数增加点付作用(修改)。由此可见,它的Ruby实现是如何的简洁了。(几乎无一字可减,很强很简洁)

当然如果你对ruby的语法不是太熟,可能还是不能体会出其中的真意,所以Jamis又解释道:

It takes a value (the first argument), yields it to the associated block (the implicit second argument), and then returns the value. The block is used to operate on the first argument, and thus (by its side-effects) provides the actual work of this method.

returning函数,将value(第一个参数)应用(yield)到与之关联的block上(block其实就是隐含的第二个参数),然后返回value. 其中block只是用来对第一个参数进行操作,通过这种(付作用/修改)也就完成了方法真正的工作。

噢,如果你还与我一样依然对这个K combinator怀有好奇心的话,可以继续google之,才发现这个K也是很不简单的滴,它来源于那让人费解的SKI combinator中的第二个。

SKI的伟大之处,在于证明了所有的函数都是可以被分解为S与K的。读到这里你否有一点灵光一闪?我靠,这不是与所有的计算都能还原这一个加法器这一原理般似曾相识?还有那让人头痛了很久了ackman函数、、、

唉,伟大的数学家啊,唉,牛B的ruby与Brockman

0 comments | Filed Under: | Tags: